Duplicar posibles:
How to generate dynamic (parametrized) unit tests in python?de Python creación unittest y dinámica de casos de prueba
¿Hay una manera de crear dinámicamente unittest
casos de prueba? He intentado el siguiente ..
class test_filenames(unittest.TestCase):
def setUp(self):
for category, testcases in files.items():
for testindex, curtest in enumerate(testcases):
def thetest():
parser = FileParser(curtest['input'])
theep = parser.parse()
self.assertEquals(theep.episodenumber, curtest['episodenumber'])
setattr(self, 'test_%s_%02d' % (category, testindex), thetest)
..which crea todos los métodos correctamente (que aparecen en dir()
y son exigibles), pero la prueba de detector de unittest, ni nosetest
los ejecuta ("Ran 0 pruebas en .. . ")
Dado que se me puede hacer la pregunta equivocada - lo que yo estoy tratando de lograr:
tengo un archivo que contiene los datos de prueba, una lista de nombres de archivos de entrada, y esperaba datos (simplificados para episodenumber
en el código anterior), almacenado en un diccionario de Python. La clave está en la categoría, el valor es una lista de casos de prueba, por ejemplo ..
test_cases = {}
test_cases['example_1'] = [
{'input': 'test.01',
'episodenumber': 1},
{'input': 'test.02',
'episodenumber': 2}
]
test_cases['example_2'] = [
{'input': 'another.123',
'episodenumber': 123},
{'input': 'test.e42',
'episodenumber': 32}
]
Actualmente acabo de bucle sobre todos los datos, llame self.assertEquals
en cada prueba. El problema es que, si uno falla, no veo el resto de las fallas, ya que también se agrupan en una prueba, que se cancela cuando falla una afirmación.
La forma de solucionar esto, pensé, sería (dinámicamente) crear una función para cada caso de prueba, ¿tal vez hay una manera mejor?
PYtest (http://pytest.org/) también es compatible con las pruebas basadas en generador. –
+1 para un enlace útil --- los enlaces en respuestas similares sobre esta y otras preguntas no tenían ese enlace. –