Je tente de tester une API Web. Disons qu'un point final accepte plusieurs paramètres:Utilisez pytest pour tester plusieurs options
-
Type
- : avec des valeurs possibles de « grand », « petit », « moyen »
- couleur: avec des valeurs possibles de « noir », « blanc », " rouge »
- expédition: avec des valeurs possibles de « 1 », « 2 », « 7 »
Je veux tester toutes les combinaisons de ceux-ci pour assurer l'API retourne des résultats corrects. Au début, je pensais que je pouvais construire 3 appareils:
valid_types = ["big", "small", "medium"]
valid_colors = ['black', 'white', 'red']
valid_shipping = ['1', '2', '7']
@pytest.fixture(params=valid_types)
def valid_type(request):
return request.param
@pytest.fixture(params=valid_colors)
def valid_color(request):
return request.param
@pytest.fixture(params=valid_shipping)
def valid_ship(request):
return request.param
Mais, je ne sais pas comment je peux créer les permutations pour tout cela. Mon test devrait fonctionner comme ceci:
def test_api_options(valid_type, valid_color, valid_ship):
url_query = "?type={}&color={}&ship={}".format(valid_type, valid_color, valid_ship)
r = requests.get("{}{}".format(base_url, url_query)
Le test doit être exécuté pour chaque permutation et générer une nouvelle URL avec les options disponibles pour chacun. Comment puis-je faire cela avec pytest?