Python 利用pytest测试带有必填字段和可选字段的API

Python 利用pytest测试带有必填字段和可选字段的API,python,pytest,Python,Pytest,我有一系列用于测试RESTAPI的测试。端点有必选、可选和半可选(其中仅当其中一个必填字段具有特定值时才需要值) 现在我有一个类似这样的测试: valid_types = ['shirt', 'pants', 'shoes'] valid_shipping = ['1', '2', '10'] valid_color = ['red', 'black', 'purple', 'mixed'] valid_patterns = ['glitter', 'spiral', 'stars', 'ver

我有一系列用于测试RESTAPI的测试。端点有必选、可选和半可选(其中仅当其中一个必填字段具有特定值时才需要值)

现在我有一个类似这样的测试:

valid_types = ['shirt', 'pants', 'shoes']
valid_shipping = ['1', '2', '10']
valid_color = ['red', 'black', 'purple', 'mixed']
valid_patterns = ['glitter', 'spiral', 'stars', 'vertical']

@pytest.mark.parametrize("product_type", valid_types)
@pytest.mark.parametrize("shipping", valid_shipping)
@pytest.mark.parametrize("color", valid_color)
@pytest.mark.parametrize("patterns", valid_patterns)
@pytest.mark.parametrize("endpoint, success_code", [
    ('order', 200),
])
def test_valid_inputs(endpoint,
    success_code,
    product_type,
    shipping,
    color,
    patterns):
    # perform tests
在此示例中,必填字段为
产品类型
装运
颜色
<代码>图案是可选的,除非
颜色
混合的

这个测试的问题是,我不能让它通用到其他端点。我必须在测试中具有所有必需/可选逻辑

我有其他使用完全相同参数的测试,但在某些情况下只需要
产品类型
,或者需要
装运
,等等。这意味着我重复复制/粘贴
参数化
装饰器,并且必须在所有测试中进行所需/可选检查,而不是进行更一般的测试


是否有一种方法可以使用pytest指定参数是否是必需的/可选的(/半可选的),这样我就可以使用同一组decorator,只需向上一个decorator添加新的端点?我想让它更加通用,这样我就可以快速添加新的端点,而无需在每个测试中重建所需/可选的逻辑。它还将把代码简化为一个通用测试,而不是50个几乎相同的副本,除了必需/可选的逻辑。

您可以使用所有参数参数化fixture。在任何测试中使用该夹具也将参数化该测试。这样,逻辑就在一个地方。您可以使用所有参数参数化夹具。在任何测试中使用该夹具也将参数化该测试。这样,逻辑就在一个地方。