pytest 方法参数化
时间: 2023-11-17 19:01:25 浏览: 109
pytest方法参数化是一种在pytest测试框架中,通过使用装饰器@pytest.mark.parametrize来为测试函数提供多组参数的方法。这种方法可以让我们更加方便地编写测试用例,减少代码冗余,提高测试效率。其中,参数名是测试函数中的参数名,list是一个包含多组参数的列表。通过这种方法,我们可以轻松地对测试函数进行多组参数的测试,从而提高测试的覆盖率和可靠性。
举个例子,假设我们有一个测试函数test_add,用于测试两个数相加的结果是否正确。我们可以使用@pytest.mark.parametrize装饰器来为这个函数提供多组参数,如下所示:
```python
import pytest
@pytest.mark.parametrize("a, b, expected", [(1, 2, 3), (2, 3, 5), (3, 4, 7)])
def test_add(a, b, expected):
assert a + b == expected
```
在这个例子中,我们为test_add函数提供了三组参数,分别是(1, 2, 3),(2, 3, 5)和(3, 4, 7)。pytest会自动运行这个函数三次,每次使用不同的参数进行测试。如果所有的测试都通过,那么这个测试函数就被认为是通过的。
相关问题
pytest 的参数化
pytest 的参数化功能可以让我们轻松地生成多个测试用例,并且只需要在一个测试函数中编写一次测试逻辑,省去了大量的重复代码。下面是一个使用 pytest 参数化的示例:
```
import pytest
@pytest.mark.parametrize("input1, input2, expected_output", [
(1, 2, 3),
(0, 0, 0),
(-1, 1, 0)
])
def test_addition(input1, input2, expected_output):
assert input1 + input2 == expected_output
```
在上面的代码中,我们使用 `@pytest.mark.parametrize` 装饰器来指定测试函数的参数化列表。每个参数化列表元素是一个包含测试参数和期望输出的元组。在这个例子中,我们为 `input1`、`input2` 和 `expected_output` 参数指定了三个不同的元组。这样,pytest 会自动为每个元组生成一个单独的测试用例,并使用指定的参数运行测试函数。
运行上面的测试函数,pytest 将会使用参数 `(1, 2, 3)` 运行一次 `test_addition` 函数,使用参数 `(0, 0, 0)` 运行一次,使用参数 `(-1, 1, 0)` 运行一次。如果所有测试用例都通过,则 pytest 将会输出测试通过的信息。
pytest 命令行参数化
pytest支持通过命令行传递参数来进行参数化。首先需要在conftest.py中添加命令行选项,可以使用pytest_addoption函数来实现。在该函数中,可以通过parser.addoption方法添加参数选项,比如"--cmdopt"。然后,可以在用例中使用fixture来调用cmdopt函数,从命令行传入的参数可以通过该函数获取到。例如:@pytest.fixture(scope='class') def cmdopt(request): return request.config.getoption("--cmdopt")。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [Pytest 命令行传参代码示例](https://blog.csdn.net/liuchaoqi06/article/details/121142117)[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_2"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [pytest中命令行传参,以及三种参数化方式](https://blog.csdn.net/weixin_40274647/article/details/120976782)[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_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文