pytest-timeout jest plugin do py.test który zakończy testy po upływie określonego czasu. & Nbsp; Czyniąc to dostaniesz zrzut stosu wszystkich wątków działających w tym czasie. Jest to przydatne w przypadku, np prowadzenie badań w ramach serwera ciągłej integracji (CI).
Zastosowanie
Zainstaluj poprzez:
pip install pytest-timeout
a następnie włączyć wtyczkę, albo z wiersza poleceń:
py.test -p Timeout
lub więcej, korzystnie z modułu testowej lub conftest.py:
pytest_plugins = "Limit czasu"
Możesz zmienić czas za pomocą --timeout parametr, który określa limit czasu w sekundach.
Jak to działa?
Wtyczka działa w jeden z dwóch sposobów. Jeśli system obsługuje sygnał SIGALRM alarm zostanie zaplanowane podczas uruchamiania testy i anulowane, gdy kończy. Jeśli alarm wygasa w trakcie badania obsługi sygnału użyje pytest.fail (), aby przerwać test po cenach dumpingowych stos innych wątków działających na stderr.
Jeśli system nie obsługuje SIGALRM lub opcja --nosigalrm użyto następnie wątek zegar będzie używany zamiast. Po raz kolejny, jeśli zegar nie zostanie anulowane, zanim ona wygaśnie będzie zrzucić stos wszystkich wątków na stderr przed zakończeniem całego procesu py.test pomocą os._exit (1).
Wadą tego sposobu jest to, że SIGALRM sygnał jest wykorzystywany przez system testowania. Jeśli sygnał ten jest wykorzystywany przez kod w teście trzeba będzie użyć opcji --nosigalrm. Ograniczenie wątku timera jest jednak dodatkowy narzut tworzenia wątku dla każdego wykonywanego badania oraz fakt, że po upływie limitu czasu, cały proces jest zatrzymany, a dalsze badania są wykonywane.
Co to jest Nowa w tym wydaniu:.
- Dodano zmienną środowiskową PYTEST_TIMEOUT jako sposób określania limitu czasu (zamyka problem # 2)
- Bardziej elastyczne analizowania argumentów znacznik:. Można teraz określić metodę używając argumentu pozycyjnego
- Wtyczka jest teraz domyślnie włączona. Nie ma już potrzeby, aby określić limit czasu = 0 w pliku konfiguracyjnym lub w wierszu poleceń po prostu tak, że znacznik będzie działać.
Co nowego w wersji 0.2:
- Dodaj znacznik, aby zmodyfikować czas, po użyciupytest .timeout (N), składni, dzięki Laurant Brack do pierwotnego kodu.
- Możliwość markerem limit czasu, aby wybrać metodę limitu czasu za pomocą słowa kluczowego argumentu metody.
- Zmień nazwę --nosigalrm opcję --method = wątek do przyszłego wsparcia dowód na eventlet i gevent. Dzięki Ronny Pfannschmidt za podpowiedź.
- Dodaj limitu czasu i timeout_method elementów do pliku konfiguracyjnego, więc można włączyć i skonfigurować wtyczkę za pomocą pliku ini. Dzięki Holger Krekel i Ronny Pfannschmidt za podpowiedzi.
- Testowany (i stałe) dla Pythona 2.6, 2.7 i 3.2.
Wymagania :
- Python
- py.test
Komentarze nie znaleziono