Пример, который вы привели, настолько прост, что вам не нужны светильники.Вы просто сделаете:
import pytest
@pytest.mark.parametrize("a,b,expected", [
(1,2,3),
(5,3,8),
])
def test_foo(a, b, expected):
assert a + b == expected
Подробнее см. https://docs.pytest.org/en/3.6.1/parametrize.html
Однако, я собираюсь предположить, вы просто упростили это так, как часть создания MCVE .В этом случае вы должны сделать следующее:
@pytest.fixture(params=[(1 , 2, "three"), (5,3,"eight")])
def option_a_and_b(request):
a, b, word = request.param
return a + b, word
def test_foo(option_a_and_b):
total, word = option_a_and_b
if total == 3:
assert word == "three"
elif total == 8:
assert word == "eight"
else:
assert False
def test_bar(option_a_and_b):
pass
Если вы запустите этот код, вы заметите 4 прохождения тестов, потому что каждый тест, который получает этот прибор, будет выполняться для каждого param
.
Подробнее см. https://docs.pytest.org/en/3.6.1/fixture.html#fixture-parametrize.