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来做到这一点?