Как запустить test suite с разными параметрами? (Pytest)
Есть набор ui тестов в одном классе:
class TestMainPage(object):
login = 'login'
password = 'password'
def test_open_site(self, browser, url):
"""Opening browser and go to website"""
browser.go_to_site(url)
browser.check_open_auth_page()
def test_authorisation(self, browser):
"""Аuthorization on the website"""
browser.authorisation(login=self.login, password=self.password)
...
Этот набор тестов нужно прогнать с различными параметрами (url, login, password), как это сделать?
Важно, что бы при каждом новом наборе параметров, выполнялись все тесты поочередно, а не как в случае с параметризацией ф-кции,когда один тест выполняется со всеми аргументами и только после этого переходит к следующему тесту
@pytest.mark.parametrize("a,b,expected", testdata)
def test_timedistance_v0(a, b, expected):
diff = a - b
assert diff == expected
Ответы (1 шт):
Автор решения: Fedor March
→ Ссылка
На данный момент нашел вот такое решение:
my_list = [5,2,3]
@pytest.fixture(scope="module", params=my_list)
def my_params(request):
return request.param
class Test_suite:
def test_1(self, my_params):
assert 1==1
def test_2(self, my_params):
assert 1 == 1
def test_3(self, my_params):
assert 1 == 1
По итогу получим:
test.py::Test_suite::test_1[5] PASSED
test.py::Test_suite::test_2[5] PASSED
test.py::Test_suite::test_3[5] PASSED
test.py::Test_suite::test_1[2] PASSED
test.py::Test_suite::test_2[2] PASSED
test.py::Test_suite::test_3[2] PASSED
test.py::Test_suite::test_1[3] PASSED
test.py::Test_suite::test_2[3] PASSED
test.py::Test_suite::test_3[3] PASSED
В целом, мне этого достаточно. Ответ нашел на англоязычной части форума: тык