我正在尝试测试 Web API。假设一个端点接受多个参数:
我想测试这些的所有组合,以确保 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)
测试应该针对每个排列运行,并生成一个新的 url,其中包含每个排列的可用选项。我怎样才能用 pytest 做到这一点?
这就是参数化的目的:
@pytest.mark.parametrize('valid_type', valid_types)
@pytest.mark.parametrize('valid_color', valid_colors)
@pytest.mark.parametrize('valid_ship', valid_shipping)
def test_api_options(valid_type, valid_color, valid_ship):
| 归档时间: | 
 | 
| 查看次数: | 968 次 | 
| 最近记录: |