Как выполнить определенный тест только на моем локальном компьютере, используя pytest

#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. Я думаю, что использование переменных среды разумно, поскольку оно более гибкое, вместо проверки версий платформы (что приведет к сбою в случае изменений в используемой машине, поэтому может потребоваться постоянное обновление).