Testowanie nosa - ramy
Projekt nos został wydany w 2005 roku, rok później py.testotrzymał swoją nowoczesną postać. Został napisany przez Jasona Pellerina, aby obsługiwał te same idiomy testowe, które były pionierami w py.test, ale w pakiecie, który jest łatwiejszy w instalacji i utrzymaniu.
Plik nose moduł można zainstalować za pomocą narzędzia pip
pip install nose
Spowoduje to zainstalowanie modułu nose w bieżącej dystrybucji Pythona, a także nosetest.exe, co oznacza, że test można uruchomić za pomocą tego narzędzia, a także przełącznika –m.
C:\python>nosetests –v test_sample.py
Or
C:\python>python –m nose test_sample.py
nose zbiera testy z unittest.TestCaseoczywiście podklasy. Możemy również napisać proste funkcje testowe, a także klasy testowe, które nie są podklasami unittest.TestCase. Nose zapewnia również szereg przydatnych funkcji do pisania testów czasowych, testowania wyjątków i innych typowych przypadków użycia.
nosezbiera testy automatycznie. Nie ma potrzeby ręcznego zbierania przypadków testowych do zestawów testów. Wykonywanie testów jest responsywne, ponieważnose rozpoczyna wykonywanie testów zaraz po załadowaniu pierwszego modułu testowego.
Podobnie jak w przypadku najbardziej niezamierzonego modułu, nose obsługuje osprzęt na poziomie pakietu, modułu, klasy i przypadku testowego, więc kosztowna inicjalizacja może być wykonywana tak rzadko, jak to możliwe.
Podstawowe użycie
Rozważmy nosetest.py podobny do skryptu używanego wcześniej -
# content of nosetest.py
def func(x):
return x + 1
def test_answer():
assert func(3) == 5
Aby uruchomić powyższy test, użyj następującej składni wiersza poleceń -
C:\python>nosetests –v nosetest.py
Dane wyjściowe wyświetlane na konsoli będą wyglądać następująco -
nosetest.test_answer ... FAIL
================================================================
FAIL: nosetest.test_answer
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\Python34\lib\site-packages\nose\case.py", line 198, in runTest
self.test(*self.arg)
File "C:\Python34\nosetest.py", line 6, in test_answer
assert func(3) == 5
AssertionError
----------------------------------------------------------------------
Ran 1 test in 0.000s
FAILED (failures = 1)
nose można zintegrować z DocTest za pomocą with-doctest opcja w wierszu poleceń athe bove.
\nosetests --with-doctest -v nosetest.py
Możesz użyć nose w skrypcie testowym -
import nose
nose.main()
Jeśli nie chcesz, aby skrypt testowy kończył się z 0 w przypadku sukcesu i 1 w przypadku niepowodzenia (np. Unittest.main), użyj zamiast tego nose.run () -
import nose
result = nose.run()
Wynik będzie prawdziwy, jeśli przebieg testowy powiedzie się, lub fałszywy, jeśli zakończy się niepowodzeniem lub zgłosi nieprzechwycony wyjątek.
noseobsługuje urządzenia (metody konfiguracji i rozłączania) na poziomie pakietu, modułu, klasy i testu. Podobnie jak w przypadku urządzeń py.test lub unittest, setup zawsze uruchamia się przed jakimkolwiek testem (lub kolekcją testów dla pakietów i modułów testowych); teardown jest uruchamiane, jeśli instalacja zakończyła się pomyślnie, niezależnie od stanu uruchomienia testowego.