pytest参数化param
时间: 2023-10-15 08:02:59 浏览: 40
pytest的参数化功能可以使用`@pytest.mark.parametrize`装饰器来实现。该装饰器可以用于测试函数或测试方法,它允许您为测试用例指定多个参数组合。
下面是一个示例:
```python
import pytest
@pytest.mark.parametrize("param", [("value1"), ("value2")])
def test_example(param):
assert isinstance(param, str)
```
在这个示例中,`test_example`函数使用了参数化装饰器`@pytest.mark.parametrize`。参数化装饰器接受一个参数名称和一个参数值列表。在这个例子中,参数名称是"param",参数值列表是[("value1"), ("value2")]。
`test_example`函数会被执行两次,分别使用"value1"和"value2"作为参数。在每次执行时,断言语句会检查参数的类型是否为字符串。
您可以根据测试的需要为参数化装饰器提供不同的参数组合。这样,您就可以轻松地执行多个具有不同输入的测试用例。
相关问题
pytest参数化parametrize
pytest中的参数化装饰器parametrize可以用于为函数或类添加多个参数组合,生成多个测试用例。参数的组合是根据给定的参数值列表来生成的。
具体使用方式如下:
1. 使用装饰器@parametrize来标记需要参数化的测试函数或测试类。
2. 在@parametrize装饰器中,通过指定参数名和对应的参数值列表来定义参数组合。参数值列表可以是一个可迭代对象,例如列表或元组。
3. 当有多个参数需要参数化时,可以使用多个@parametrize装饰器,每个装饰器对应一个参数。
4. 最终生成的测试用例数量为各个参数值列表长度的乘积。
例如,如果有两个参数a和b,分别有两个和三个取值,那么最终生成的测试用例数量就是2*3=6。
示例代码如下:
```python
import pytest
data1 = [1, 2]
data2 = ['a', 'b', 'c']
@pytest.mark.parametrize('test1', data1)
@pytest.mark.parametrize('test2', data2)
def test_param(test1, test2):
print('\n测试数据:{}-{}'.format(test1, test2))
```
在上述示例中,test_param函数有两个参数test1和test2,它们分别可以取data1和data2中的值。最终生成的测试用例数量为2*3=6,每个用例中的参数取值为(1, 'a')、(1, 'b')、(1, 'c')、(2, 'a')、(2, 'b')、(2, 'c')。
另外,参数化装饰器还支持指定参数名,用来在测试用例中展示参数值的名称。例如:
```python
import pytest
data = [(1, 2, 3), (4, 5, 9)]
@pytest.mark.parametrize('a, b, expect', data)
def test_param(a, b, expect):
print('\n测试数据:{} {}'.format(a, b))
assert a + b == expect
```
在上述示例中,test_param函数有三个参数a、b和expect,它们分别可以取data中的三元组的值。最终生成的测试用例数量为2,每个用例中的参数取值为(1, 2, 3)和(4, 5, 9)。
通过使用参数化装饰器@parametrize,可以方便地生成多个测试用例,并且在测试报告中展示参数值的组合。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [Python测试框架pytest(17)参数化parametrize](https://blog.csdn.net/wangmcn/article/details/120956918)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [pytest之parametrize参数化](https://blog.csdn.net/ifling99/article/details/126236312)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
pytest.param
pytest.param是pytest框架中的一个参数化装饰器,用于在参数化测试中对特定参数进行标记或设置属性。它可以用于pytest.mark.parametrize方法中的参数集合中,通过传入marks和id参数来对特定的参数进行标记或设置id属性。例如,在参数化测试中,可以使用pytest.param来标记某些参数为xfail(预期失败),以便在测试运行时将其标记为失败而不是错误。[3]