Зачем pytest выходить один раз из таймаута модульного теста (@ pytest.mark.timeout (3))? - PullRequest
0 голосов
/ 11 октября 2018

Я устанавливаю 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 собраны 3items

test_log.py.

++++++++++++++++++++++++ Timeout ++++++++++++++++++++++++

~~~~~~~~~~~~~~ Стек 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 (code, run_globals)

... (здесь слишком много журналов)

Файл "D: \ dev \ pytestlog \ test_log.py", строка 15, в test_02 time.sleep (4)

++++++++++++++++++++++++ Timeout ++++++++++++++++++++++++

D: \DEV \ pytestlog>

1 Ответ

0 голосов
/ 12 октября 2018

3-й модульный тест не запускается.выход при первой ошибке

Для выхода при первой ошибке для pytest

-x, --exitfirst       exit instantly on first error or failed test.
pytest -v --exitfirst test_log.py

с nose2

-F, --fail-fast Остановить тестовый прогон послепервая ошибка или сбой

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, по умолчанию это выход при первой ошибке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...