Zacząłem pracować nad dość dużym (wielowątkowym) projektem w Pythonie, z mnóstwem (jednostkowych) testów. Najważniejszym problemem jest to, że uruchomienie aplikacji wymaga wcześniej ustawionego środowiska, które jest realizowane przez menedżera kontekstu. Do tej pory korzystaliśmy z poprawionej wersji modułu uruchamiającego testy jednostkowe, który uruchamiałby testy wewnątrz tego menedżera, ale nie pozwala na przełączanie kontekstu między różnymi modułami testowymi.
Zarówno nos, jak i pytest obsługują taką rzecz, ponieważ obsługują mocowania na wielu ziarnistościach, więc szukamy przełączenia na nos lub pytest. Obie te biblioteki obsługiwałyby również testy „tagowania” i uruchamiały tylko te oznaczone podzbiory, co również chcielibyśmy zrobić.
Przeglądałem trochę dokumentację zarówno nosa, jak i pytesta i, o ile widzę, większa część tych bibliotek zasadniczo obsługuje tę samą funkcjonalność, z tym że może mieć inną nazwę lub wymagać nieco innej składni. Zauważyłem też drobne różnice w dostępnych wtyczkach (nos obsługuje wiele procesów, na przykład pytest nie wydaje się)
Wydaje się więc, że diabeł tkwi w szczegółach, co oznacza (przynajmniej często) w osobistym guście i lepiej wybrać bibliotekę, która najlepiej pasuje do naszego gustu.
Chciałbym więc poprosić o subiektywną argumentację, dlaczego mam iść z nosem lub zapytać o to, aby wybrać kombinację biblioteka / społeczność, która najlepiej odpowiada naszym potrzebom.
pytest
obsługuje obsługę wielu procesów za pośrednictwem wtyczki pytest-xdist .manager.__enter__()
swojeTestCase.setUp()
imanager.__exit__()
swojetearDown()
.Odpowiedzi:
Kiedyś używałem Nosa, ponieważ był domyślny w przypadku Pylonów. W ogóle mi się to nie podobało. Miał wąsy konfiguracyjne w wielu miejscach, praktycznie wszystko wydawało się być zrobione za pomocą nieudokumentowanej wtyczki, co czyniło wszystko jeszcze bardziej pośrednim i zagmatwanym, a ponieważ domyślnie wykonywał niezatwierdzone testy, regularnie zrywał ze śladami Unicode, ukrywając źródła błędów.
Jestem bardzo zadowolony z py.test przez ostatnie kilka lat. Będąc w stanie tylko napisać test z
assert
wyjęciu z pudełka sprawia, że cierpię pisania testów sposób mniej, i włamania cokolwiek muszę szczycie rdzeń jest całkiem proste. Zamiast stałego interfejsu wtyczki ma po prostu stosy haków i całkiem zrozumiały kod źródłowy, gdybyś musiał szukać dalej. Napisałem nawet adapter do uruchamiania testów Testify w ramach py.test i miałem więcej problemów z Testify niż z py.test.To powiedziawszy, słyszałem, że nos ma obecnie wtyczki do testów bezklasowych i potwierdzania introspekcji, więc prawdopodobnie poradzisz sobie z jednym z nich. Nadal czuję, że mogę uderzyć w ziemię z py.test i rozumiem, co się dzieje, gdy się zepsuje.
źródło