Зачем pytest выходить один раз из таймаута модульного теста (@ pytest.mark.timeout (3))?

1

Я устанавливаю 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>

  • 0
    Мне интересно, как может закончиться юнит-тест? Вы правильно издевались над своими зависимостями?
  • 0
    Привет, Клаус, ты можешь видеть pypi.org/project/pytest-timeout , используйте @pytest.mark.timeoutпометить отдельные тесты как имеющие тайм-аут
Показать ещё 3 комментария
Теги:
unit-testing
pytest

1 ответ

0

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню