Я устанавливаю pytest
и pytest-timeout
, я следую за установкой pytest-timeout
в https://pypi.org/project/pytest-timeout/, чтобы установить таймаут для каждого модульного теста.
И я хочу только сбой модульного теста, если у него закончилось время, и продолжить выполнение других модульных тестов.
См. Мой код модульных тестов:
# content of test_log.py
import time
import pytest
class TestDemo(object):
@pytest.mark.timeout(60)
def test_01(self):
time.sleep(2)
assert "1"
@pytest.mark.timeout(3)
def test_02(self):
time.sleep(4)
assert "1"
@pytest.mark.timeout(3)
def test_03(self):
time.sleep(1)
assert "1"
Теперь проблема в том, что я запускаю этот код в своей Windows 7, тест будет остановлен, как только во второй раз закончится время, тест 3-го блока не будет запущен.
У меня есть журнал, как показано ниже:
D:\DEV\pytestlog> pytest
=================== Запуск тестовой сессии ==============
платформа win32 - Python 3.6.4, pytest-3.8.2, py-1.5.3, pluggy-0.7.1 rootdir: D:\dev\pytestlog, inifile: плагины: timeout-1.3.2, instafail-0.4.0 собрано 3 объекта
test_log.py.
++++++++++++++++++++++++ Тайм-аут ++++++++++++++++++++++++
~~~~~~~~~~~~~~ Стек MainThread (17636) ~~~~~~~~~~~~~~
Файл "c:\python36-32\lib\runpy.py", строка 193, в _run_module_as_main " main ", mod_spec) Файл "c:\python36-32\lib\runpy.py", строка 85, в _run_code exec ( код, run_globals)
... (слишком много журналов здесь)
Файл "D:\dev\pytestlog\test_log.py", строка 15, в test_02 time.sleep(4)
++++++++++++++++++++++++ Тайм-аут ++++++++++++++++++++++++
D:\DEV\pytestlog>
тест 3-го блока не запускается. выйти с первой ошибкой
Для выхода из первой ошибки для pytest
-x, --exitfirst exit instantly on first error or failed test.
pytest -v --exitfirst test_log.py
с носом2
-F, - -F ail -F ast Остановить тестовый запуск после первой ошибки или сбоя
nose2 -F
с носетами
-x, --stop Stop running tests after the first error or failure
Выполнять все тесты независимо от ошибок
pytest -v --continue-on-collection-errors test_log.py
--continue-on-collection-errors
Force test execution even if collection errors occur.
проверьте свою конфигурацию pytest, по умолчанию - выход с первой ошибкой
@pytest.mark.timeout
пометить отдельные тесты как имеющие тайм-аут