2013-04-17 25 views
6

próbuję wdrożyć pełny i czysty sposób testowania pakietów Python, taki, który będzie odpowiadał wymaganiom folowing:Rozwiązywanie zamieszanie generowane przez zbyt wielu sposobów, aby uruchomić unittest w Pythonie

  • wykonujące testy na czystych maszyn bez ich ustanowieniem (virtualenv)
  • zebrać wyniki wielu platformach
  • zebrać wyniki wielu tłumaczy Pythona
  • współpracowników de pokrycie (połączenie wyników wielokrotnego wykonania w pojedynczym raporcie)
  • być w stanie wygenerować raport o pokryciu kodu XML, aby system budujący mógł śledzić zmiany w czasie.
  • móc włączyć testy wyłączyć oparty na platformie
  • uruchomić kilka poleceń przed testami, jak pep8 lub autopep8
  • testy wykonywane równolegle.

użyłem kilka podejść: nose + pytest, tox + pytest ale niedawno odkryto, że pytest powinien być w stanie zrobić większość rzeczy.

Głównym problemem jest to, że nie byłem w stanie znaleźć jasnego porównania odnośnie tego, kiedy lepiej byłoby zastosować jedno lub drugie podejście.

Czy ktoś może wyjaśnić i podać niektóre przypadki użycia lub ograniczenia tych konfiguracji? ... tylko po to, by wyjaśnić, kiedy wybierasz się do jednego lub drugiego podejścia.

W końcu chcę mieć te opcje:

  • quicktest - uruchomić testy lokalnie, musi przed każdym commmit
  • fulltest - pełne testy, uruchamiając je na wszystkich dostępnych platformach, koniecznością przed wprowadzeniem nowej wersji
+1

Jeśli pytest spełnia wszystkie Twoje potrzeby, dlaczego rozważasz użycie innej konfiguracji? Z pewnością byłoby to najprostsze. – pfctdayelise

Odpowiedz

1

py.test obejmuje wszystkie potrzeby doskonale to zalety w porównaniu do innych biegaczy testowych jak nos:

  • Oprawy z wtryskiem zależność - eliminuje konieczność skomplikowanego OOP dla konfiguracji testowej
  • prosty, ale potężny system wtyczek z dużą ilością przydatnych wtyczek - wtyczek takich jak pytest-xdist pozwalają przetestować na wszystkich platformach, jak trzeba, w tym windows, pytest-cov ma zasięg, pytest-cache pomaga uruchamiać tylko ostatnie nieudane testy, itp.
  • Parametrizacja pozwala na użycie metody wielokrotnego zapisu jednokrotnego do testów z użyciem parametrów deklaratywnych
  • użycie prostej instrukcji assert kontra skomplikowana składnia podobna do java .assertEquals (http://pytest.org/latest/assert.html)
  • coraz więcej