Добрый день! Мне необходимо запустить параметризованный тест, который будет принимать 2 значения из списков т.е. будет брать для первого теста list1[0] и list2[0], для второго list1[1] и list2[1] и т.д. Но не получается правильно указать параметры в фикстуре.
Если я указываю @pytest.mark.parametrize('agent_value, expected_value', (user_agents, expected_values)) передаётся весь список целиком и я получаю ошибку ['agent_value', 'expected_value'] must be equal to the number of values (5): "вывод всего списка".
Если указать один параметр @pytest.mark.parametrize('agent_value', user_agents) то значения списка передаются по одному и тесты проходят, но мне нужны оба значения, чтобы потом сравнивать ввод с выводом.
Подскажите пожалуйста как корректно указать параметры в фикстуре. Прикладываю код.
import requests
import pytest
user_agents = [
'Mozilla/5.0 (Linux; U; Android 4.0.2; en-us; Galaxy Nexus Build/ICL53F) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30',
'Mozilla/5.0 (iPad; CPU OS 13_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/91.0.4472.77 Mobile/15E148 Safari/604.1',
'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36 Edg/91.0.100.0',
'Mozilla/5.0 (iPad; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1'
]
expected_values = [
{'platform': 'Mobile', 'browser': 'No', 'device': 'Android'},
{'platform': 'Mobile', 'browser': 'Chrome', 'device': 'iOS'},
{'platform': 'Googlebot', 'browser': 'Unknown', 'device': 'Unknown'},
{'platform': 'Web', 'browser': 'Chrome', 'device': 'No'},
{'platform': 'Mobile', 'browser': 'No', 'device': 'iPhone'}
]
@pytest.mark.parametrize('agent_value, expected_value', (user_agents, expected_values))
def test_user_agent(agent_value, expected_value):
print(agent_value)
response = requests.get("https://playground.learnqa.ru/ajax/api/user_agent_check", headers={"User-Agent": agent_value})
print(response.text)