Eventuali duplicati:
How to generate dynamic (parametrized) unit tests in python?di Python unittest e dinamica creazione di casi di test
Esiste un modo per creare dinamicamente unittest
casi di test? Ho provato quanto segue ..
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)
..che crea tutti i metodi correttamente (si fanno vedere in dir()
e sono callable), ma rivelatore di prova di unittest, nè nosetest
li esegue ("Ran 0 test in .. . ")
Dal momento che può chiedere la domanda sbagliata - quello che sto cercando di realizzare:
ho un file contenente i dati di test, un elenco di nomi di file di input, e aspettavo i dati (semplificati per episodenumber
nel sopra il codice), memorizzato in un dizionario Python. La chiave è la categoria, il valore è un elenco di casi di test, per esempio ..
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}
]
Attualmente ho solo un ciclo su tutti i dati, chiamano self.assertEquals
su ogni test. Il problema è che, se uno fallisce, non vedo il resto degli errori poiché sono anche raggruppati in un test, che si interrompe quando un'asserzione fallisce.
Il modo per aggirare questo, ho pensato, sarebbe quello di (in modo dinamico) creare una funzione per ogni caso di test, forse c'è un modo migliore?
pytest (http://pytest.org/) supporta anche i test del generatore-based. –
+1 per link utili --- collegamenti su risposte simili su questa e altre domande non avevano quel collegamento. –