Передать параметры в тест

Есть фикстура:

@pytest.fixture
def fixture():
    a = 1
    # Before
    yield
    # After

Есть тест:

def test_1():
    # define a
    assert a == 1

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


Ответы (1 шт):

Автор решения: Roman Konoval

yield может возвращать значение, которое будет передано в параметре теста, который называется, так же как и фикстура:

@pytest.fixture
def fixture():
    a = 1
    # Before
    yield a
    # After

def test_1(fixture):
    assert fixture == 1

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

@pytest.fixture
def fixture():
    a = 1
    b = 2
    # Before
    yield (a, b)
    # After

def test_1(fixture):
    a, b = fixture
    assert a == 1
    assert b == 1
→ Ссылка