@pytest.mark.parametrize实例代码
时间: 2024-06-16 16:08:18 浏览: 168
`@pytest.mark.parametrize` 是 pytest 框架中的一个装饰器,用于参数化测试用例。通过该装饰器,我们可以将多组参数传递给同一个测试函数,并自动运行多次测试,以验证不同参数下的测试结果。
以下是一个 `@pytest.mark.parametrize` 的实例代码:
```python
import pytest
def add(a, b):
return a + b
@pytest.mark.parametrize("a, b, expected", [
(1, 2, 3),
(4, 5, 9),
(10, -5, 5)
])
def test_add(a, b, expected):
assert add(a, b) == expected
```
在上述代码中,我们定义了一个 `add` 函数用于两个数相加。然后,我们使用 `@pytest.mark.parametrize` 装饰器来标记 `test_add` 函数,并传递了三个参数:`a`、`b` 和 `expected`。每个参数都是一个列表,其中包含多组参数值。
当运行测试时,pytest 将自动使用每组参数值来执行 `test_add` 函数,并验证实际结果是否与期望结果一致。
相关问题
@pytest.mark.parametrize怎么实现并发?做一个实例给我看看
可以使用pytest-xdist插件来实现并发测试。在安装了该插件后,可以使用-x参数来指定并发的进程数。例如,使用以下命令运行测试:
pytest -n 4 test_file.py
这将使用4个进程并发运行测试。其中,test_file.py是要运行的测试文件名。
Pytest中的常用内容实例
以下是Pytest中的常用内容的一些实例:
1. 断言(assert):
```python
def test_add():
assert 1 + 1 == 2
```
2. Fixture:
```python
@pytest.fixture()
def prepare_data():
data = [1, 2, 3, 4, 5]
return data
def test_data(prepare_data):
assert len(prepare_data) == 5
```
3. 参数化(Parametrize):
```python
@pytest.mark.parametrize("a, b, result", [(1, 2, 3), (4, 5, 9), (7, 8, 15)])
def test_add(a, b, result):
assert a + b == result
```
4. 插件(Plugin):
安装pytest-html插件:
```bash
pip install pytest-html
```
使用pytest-html生成测试报告:
```bash
pytest --html=report.html
```
5. 命令行选项和参数:
运行指定目录下的测试用例:
```bash
pytest tests/
```
指定测试用例名称:
```bash
pytest -k "test_add"
```
生成HTML测试报告:
```bash
pytest --html=report.html
```
6. 测试标记(Mark):
```python
@pytest.mark.slow
def test_slow():
time.sleep(5)
assert True
@pytest.mark.skip(reason="not implemented yet")
def test_not_implemented():
assert False
```
7. 测试收集和执行:
在pytest.ini文件中指定测试文件的匹配规则:
```ini
[pytest]
python_files = test_*.py
```
以上是Pytest中的常用内容的一些实例,可以根据需要进行调整和扩展。
阅读全文