Mam chęć używać Nosa do zestawu testów integracyjnych. Jednak kolejność wykonywania niektórych z tych testów jest ważna.Wtyczka "Nos" określająca kolejność wykonywania testów jednostkowych
To powiedziawszy, myślałem, że chciałbym wrzucić razem szybki wtyczkę do dekoracji test z rzędu chcę wykonywany: 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
od kontroli wbudowanej wtyczki myślałem, mogłem po prostu przesłanianie loadTestsFromTestCase
i zamówić testy autorem zdobionej „numer kroku” .:
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
Ta metoda jest zwrócenie testy w kolejności pragnę jednak, gdy badania są wykonywane przez nos nie są one realizowane w tej kolejności ?
Być może muszę przenieść tę koncepcję zamawiania w inne miejsce?
UPDATE: Zgodnie z komentarzem, który zrobiłem, wtyczka działa właściwie zgodnie z oczekiwaniami. Myliłem się, aby zaufać reporterowi testu pycharm. Testy działają zgodnie z oczekiwaniami. Zamiast usunąć pytanie, doszedłem do wniosku, że zostawię to.
Cóż, myślę, że to pytanie może być zignorowane, wtyczka działa zgodnie z oczekiwaniami ... Miałem pierdnięcie w mózgu podczas uruchamiania go z pychamr, gdzie testowy reporter był zamawiany inaczej. Jednak testy są faktycznie zamawiane zgodnie z oczekiwaniami podczas wykonywania. – Jesse
Nie chcę zakładać zbyt wiele, ponieważ nie znam twojej bazy kodu, ale na podstawie mojego doświadczenia z testami automatycznymi jest bardzo prawdopodobne, że najlepszym długoterminowym rozwiązaniem jest ponowne zaprojektowanie testów w taki sposób, aby nie mają już wzajemnych zależności. Możesz rozważyć powtórzenie niezbędnych warunków wstępnych w funkcjach konfiguracyjnych lub sekwencjach zdarzeń, które naprawdę są zależne, łącząc je w jeden test. Należy również pamiętać, że jako test jednostkowy powinieneś ogólnie testować poszczególne "jednostki" funkcjonalności i unikać zewnętrznych IO, gdy tylko jest to możliwe. – GrandOpener