Использование светильников внутри функции тестирования

#python #pytest

Вопрос:

Я использую несколько светильников внутри декоратора светильников, как показано ниже:

 @pytest.mark.usefixtures(fixture1, fixture2)
def test_me:
 

Файл светильников:

 @pytest.fixture
def fixture1:

@pytest.fixture
def fixture2:
 

Проблема в том, что мне нужно, чтобы эти два приспособления запускались в определенной строке моего фрагмента кода, но эти два приспособления запускаются одновременно.

Как этого можно достичь?

Ответ №1:

fixture s не являются триггерами одновременно, но оба срабатывают перед тестом, когда вы используете их в качестве аргументов, что является ожидаемым поведением. Вы также можете увидеть это в сообщении об ошибке, если попытаетесь вызвать прибор из теста

 def test_me():
    fixture1()
 

Прибор «fixture1» вызывается напрямую. Приборы не предназначены для
прямого вызова, но создаются автоматически, когда тестовые функции
запрашивают их в качестве параметров.

Если для всех ваших тестов требуются приспособления во время выполнения теста, не используйте обычные функции, а не приспособления. Если это использование уникально, вы можете добавить другую функцию, которую можно вызвать из устройства и из тестов

 def fixture1_implementation():
    ...


@pytest.fixture
def fixture1():
    fixture1_implementation()


def test_me():
    fixture1_implementation()

# or

@pytest.mark.usefixtures('fixture1')
def test_example():
    ...