#python #pytest
Вопрос:
У меня есть пара тестов, которые я хотел бы запустить на своей локальной машине, но не на CI.
Я использую pytest, как мне это сделать?
Я мог бы проверить, существует ли определенный ключ среды, и запустить тест только в том случае, если он присутствует, что-то вроде:
def test_something():
if 'key' in os.environ:
< do test stuff >
Я чувствую, что, вероятно, есть лучший подход, хотя, возможно, с использованием какого-то метода / декоратора pytest, о котором я не знаю.
Ответ №1:
Вы можете использовать функцию skipif в pytest:
skipif
Если вы хотите пропустить что-то условно, то вместо этого вы можете использовать skipif.
import sys @pytest.mark.skipif(sys.version_info < (3, 7), reason="requires python3.7 or higher") def test_function(): ...
Так что попробуйте что-нибудь вроде:
@pytest.mark.skipif("key" not in os.environ)
def test_something():
...
Комментарии:
1. Спасибо, использование переменной env тогда казалось разумным? Я не был уверен, что это было немного шатко, но не знал, как еще это сделать. Спасибо, что рассказали, как это сделать с помощью pytest, хотя
2. Я думаю, что использование переменных среды разумно, поскольку оно более гибкое, вместо проверки версий платформы (что приведет к сбою в случае изменений в используемой машине, поэтому может потребоваться постоянное обновление).