Мне известны декораторы pytest
, которые помечают тесты как пропущенные (условно). Однако все они оцениваются до начала теста. У меня есть пара тестов, которые требуют взаимодействия с пользователем (очевидно, они не запускаются в CI), и если такое взаимодействие не предусмотрено, я бы хотел пометить эти тесты как что угодно, кроме «пройдено» или «не пройдено». «Пропущено» было бы хорошо, равно как и «неубедительно», или «отменено», или что-то еще.
Это возможно?
2 ответа
В pytest можно динамически пропускать тест во время его выполнения, используя декоратор pytest.mark.skip внутри самого теста, когда определенные условия не выполняются. Если у вас есть тесты, требующие взаимодействия с пользователем, и вы хотите пометить их как нечто иное, чем просто «пройден» или «не пройден», когда такое взаимодействие отсутствует, вы можете реализовать условную оценку в тесте.
В случаях, когда необходимое взаимодействие недоступно, вы можете вызвать pytest.skip("Укажите причину пропуска") внутри тестовой функции. Этот подход позволяет вам указать, что тест был пропущен из-за отсутствия предварительных условий для определенного результата «пройден» или «не пройден», и результат будет записан как «пропущенный» в сводке теста.
Оказывается, вы также можете вызвать pytest.skip()
изнутри теста.
try:
...
except some.TimeoutException:
pytest.skip("Timeout waiting for user interaction")
Работает отлично.
Похожие вопросы
Новые вопросы
python
Python — это мультипарадигмальный многоцелевой язык программирования с динамической типизацией. Он предназначен для быстрого изучения, понимания и использования, а также обеспечивает чистый и унифицированный синтаксис. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Если у вас есть вопросы о версии Python, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas, NumPy) укажите это в тегах.