2
我正在嘗試測試一個web API。比方說,一個端點接受多個參數:使用pytest測試多個選項
- 類型:有「大」,「小」,「中」
- 顏色的可能值:有可能值「黑」,「白」,「紅色的」
- 航運:有可能的值‘1’,‘2’,‘7’
我想測試所有這些組合,以確保該API返回正確的結果。起初我以爲我可以建立3個裝置:
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
但是,我不知道如何創建所有這些排列。我的測試應該這樣操作:
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)
測試應該運行的每個排列併產生了每個可用選項的新網址。我如何用pytest來做到這一點?