Desidero utilizzare Nose per una suite di test di integrazione over the wire. Tuttavia, l'ordine di esecuzione di alcuni di questi test è importante.Un plug-in Naso per specificare l'ordine di esecuzione del test dell'unità
Detto questo, ho pensato di lanciare insieme un rapido plugin per decorare un test con l'ordine lo voglio eseguito: https://gist.github.com/Redsz/5736166
def Foo(unittest.TestCase):
@step(number=1)
def test_foo(self):
pass
@step(number=2)
def test_boo(self):
pass
Da rivedere il costruito nel plugin avevo pensato, ho potuto semplicemente di override loadTestsFromTestCase
e ordinare i test dal decorata 'numero di passo' .:
def loadTestsFromTestCase(self, cls):
"""
Return tests in this test case class. Ordered by the step definitions.
"""
l = loader.TestLoader()
tmp = l.loadTestsFromTestCase(cls)
test_order = []
for test in tmp._tests:
order = test.test._testMethodName
func = getattr(cls, test.test._testMethodName)
if hasattr(func, 'number'):
order = getattr(func, 'number')
test_order.append((test, order))
test_order.sort(key=lambda tup: tup[1])
tmp._tests = (t[0] for t in test_order)
return tmp
questo metodo sta tornando prove nell'ordine desidero, tuttavia quando i test vengono eseguiti dal naso non vengono eseguiti in questo ordine ?
Forse ho bisogno di spostare questo concetto di ordine in un altro luogo?
UPDATE: Come per il commento che ho fatto, il plugin sta funzionando come previsto. Mi sono sbagliato a fidarmi del reporter del pycharm. I test sono in esecuzione come previsto. Piuttosto che rimuovere la domanda, ho pensato di lasciar perdere.
Bene, immagino che questa domanda possa essere ignorata, il plugin funziona come previsto ... Ho avuto una scoreggia cerebrale mentre lo eseguivo da pychamr dove il reporter di test veniva ordinato diversamente. Tuttavia, i test vengono effettivamente ordinati come previsto durante l'esecuzione. – Jesse
Non voglio presumere troppo, dal momento che non conosco il codice base, ma sulla base della mia esperienza con i test automatici, è molto probabile che la migliore soluzione a lungo termine sia la riprogettazione dei test in modo tale che non hanno più dipendenze l'una dall'altra. Potresti considerare di ripetere le precondizioni necessarie nelle funzioni di configurazione o per sequenze di eventi che sono realmente dipendenti, unendoli in un singolo test. Inoltre, tieni presente che, come test unitario, devi generalmente testare singole "unità" di funzionalità ed evitare l'eventuale IO esterno, ove possibile. – GrandOpener