Вы не можете передавать приборы в качестве аргументов параметризации, см. открытый выпуск # 349 для деталей. В качестве обходного пути в вашем примере вы можете ввести прибор current_user
, который выполняет выбор прибора на основе имени прибора:
import pytest
@pytest.fixture
def current_user(request):
return request.getfixturevalue(request.param)
@pytest.fixture
def test_profile_premium():
return "premiumfizz"
@pytest.fixture
def test_profile_free():
return "freefizz"
@pytest.mark.parametrize('current_user', ["test_profile_premium", "test_profile_free"], indirect=True)
class TestFeedItemsType:
@pytest.fixture(autouse=True)
def setup(self, current_user):
self.test_profile = current_user
def test_spam(self):
assert self.test_profile in ("premiumfizz", "freefizz")
def test_eggs(self):
assert self.test_profile in ("premiumfizz", "freefizz")
Выполнение этого примера даст четыре теста:
test_spam.py::TestFeedItemsType::test_spam[test_profile_premium] PASSED
test_spam.py::TestFeedItemsType::test_spam[test_profile_free] PASSED
test_spam.py::TestFeedItemsType::test_eggs[test_profile_premium] PASSED
test_spam.py::TestFeedItemsType::test_eggs[test_profile_free] PASSED