- У меня ниже требования.
- Мне нужно передать только первый набор параметров (
(url, header, "auth")
) для проверки функции "test_1"
- Мне нужно передать два набора параметров (
(url, header, "auth"), (url, header, "bad_request")
) для проверки функции "test_2"
- Мне нужно передать весь набор параметров (
(url, header, "auth"), (url, header, "bad_request"), (url, header, "unauth"), (url + "/url_doesnt_exist", header, "invalid_request")
) для проверки функции "test_3"
В настоящее время каждый тестовый набор будет выполняться 4 раза, поэтому всего будет выполнено 12 тестовых примеров. Но я хочу, чтобы «test_1» запускался только один раз, «test_2» должен запускаться 2 раза, «test_3» должен запускаться 4 раза, поэтому должно выполняться всего 7 тестовых случаев.
Я знаю, что мы можем использовать параметризацию, как показано ниже, но здесь нам нужно определить тестовые данные для каждого тестового случая.
- @pytest.mark.parametrize ("url, header, request_type", test_data1)
- @pytest.mark.parametrize ("url, header, request_type", test_data2)
- @pytest.mark.parametrize ("url, header, request_type", test_data3)
Есть ли лучший способ передать переменное число аргументов в каждый тест?
test_data = [
(url, header, "auth"),
(url, header, "bad_request"),
(url, header, "unauth"),
(url + "/url_doesnt_exist", header, "invalid_request")
]
@pytest.fixture(params=test_data)
def my_fixture(request):
return request.param
def test_1(my_fixture):
print(my_fixture[0])
print(my_fixture[1])
print(my_fixture[2])
def test_2(my_fixture):
print(my_fixture[0])
print(my_fixture[1])
print(my_fixture[2])
def test_3(my_fixture):
print(my_fixture[0])
print(my_fixture[1])
print(my_fixture[2])