Ukończyłem swój pierwszy prawidłowy projekt w Pythonie, a teraz moim zadaniem jest napisanie testów.
Ponieważ po raz pierwszy zrobiłem projekt, po raz pierwszy będę pisać dla niego testy.
Pytanie brzmi: jak zacząć? Nie mam absolutnie żadnego pojęcia. Czy ktoś może wskazać mi jakąś dokumentację / samouczek / link / książkę, której mogę użyć do rozpoczęcia pisania testów (i chyba w szczególności testów jednostkowych)
Wszelkie porady będą mile widziane na ten temat.
python
unit-testing
testing
użytkownik225312
źródło
źródło
Odpowiedzi:
Jeśli dopiero zaczynasz korzystać z najbardziej nieprzystosowanych metod, najprostsze podejście do nauki jest często najlepsze. Na tej podstawie zalecam
py.test
raczej używanie modułu domyślnegounittest
niż domyślnego .Rozważ te dwa przykłady, które robią to samo:
Przykład 1 (najmniejszy):
Przykład 2 (pytanie):
Zakładając, że oba pliki mają nazwy
test_unittesting.py
, w jaki sposób przeprowadzamy testy?Przykład 1 (najmniejszy):
Przykład 2 (pytanie):
źródło
unit-test
nadal zawarte w standardowej bibliotece, jeślipy.test
inose
zapewnić taką samą funkcjonalność znacznie prostszy interfejs? Jest to po prostu w celu zapewnienia kompatybilności wstecznej, czy teżunittest
mają pewne zalety,py.test
inosetest
nie może zapewnić?unittest
pakiet jest wciąż wystarczająco dobry. Jest to standard, co oznacza, że jest pewny, że działa dobrze. Wreszcie, każdy, kto używa Twojego kodu, nie musi instalować dodatkowych pakietów.Darmowa książka Python Dive Into Python zawiera rozdział dotyczący testów jednostkowych , który może okazać się przydatny.
Jeśli postępujesz zgodnie z nowoczesnymi praktykami, powinieneś prawdopodobnie napisać testy podczas pisania projektu i nie czekać, aż projekt będzie prawie gotowy.
Trochę za późno, ale teraz wiesz już następnym razem. :)
źródło
Moim zdaniem istnieją trzy świetne ramy testowania w języku Python, które warto sprawdzić.
unittest - moduł jest standardowo wyposażony we wszystkich dystrybucjach python
nosa - można uruchomić unittest testy i ma mniej szablonowe.
pytest - uruchamia także najtrudniejsze testy, ma mniejszą liczbę płyt, lepsze raportowanie, wiele fajnych dodatkowych funkcji
Aby uzyskać dobre porównanie wszystkich z nich, przeczytaj wprowadzenie do każdego z nich na http://pythontesting.net/start-here .
Istnieją również rozszerzone artykuły na temat urządzeń i wiele więcej.
źródło
Dokumenty dla najbardziej nieprzystosowanych byłyby dobrym miejscem do rozpoczęcia.
Teraz jest już trochę za późno, ale w przyszłości zastanów się nad napisaniem testów jednostkowych przed lub w trakcie samego projektu. W ten sposób możesz używać ich do testowania w miarę postępów i (teoretycznie) możesz używać ich jako testów regresyjnych, aby sprawdzić, czy zmiany w kodzie nie spowodowały uszkodzenia istniejącego kodu. Dałoby to pełną korzyść z pisania przypadków testowych :)
źródło
unittest
. Kiedy już zrozumiem, wykorzystam to bardziej do programowania, a także zwiększę liczbę przypadków testowych dla każdej jednostki.unittest jest dostarczany ze standardową biblioteką, ale polecam Ci testy nosa .
„ Nos rozciąga się najtrudniej, aby ułatwić testowanie ”.
Poleciłbym również pylint
„ analizuje kod źródłowy Pythona w poszukiwaniu błędów i oznak niskiej jakości ”.
źródło
Jak już inni odpowiedzieli, jest już za późno na pisanie testów jednostkowych, ale nie za późno. Pytanie brzmi, czy Twój kod jest testowalny, czy nie. Rzeczywiście, nie jest łatwo przetestować istniejący kod, jest nawet książka na ten temat: Efektywna praca ze Starszym Kodem (patrz kluczowe punkty lub poprzedni PDF ).
Teraz piszesz testy jednostkowe, czy nie. Musisz tylko pamiętać, że może to być żmudne zadanie. Możesz rozwiązać ten problem, aby nauczyć się testowania jednostkowego lub rozważyć najpierw napisanie testów akceptacyjnych (end-to-end) i rozpocząć pisanie testów jednostkowych, kiedy zmienisz kod lub dodasz nową funkcję do projektu.
źródło
nosetests to genialne rozwiązanie do testowania jednostek w pythonie. Obsługuje zarówno testy testowe, jak i doctesty, i zaczynasz pracę z prostym plikiem konfiguracyjnym.
źródło
nose
inose2
są w trybie konserwacji . Lepiej zacząćpy.test
od tego, ponieważ ma dużo więcej wsparcia