pytest详细教程
时间: 2023-12-02 08:42:42 浏览: 92
pytest中文文档.pdf
pytest是一个功能强大的Python测试框架,它支持参数化、fixture、mock、覆盖率等多种测试方式。以下是pytest的详细教程:
1.安装pytest
```
pip install pytest
```
2.编写测试用例
pytest的测试用例文件以test_开头或以_test结尾,并且测试函数以test_开头。例如:
```python
# test_demo.py
def test_add():
assert 1 + 1 == 2
def test_sub():
assert 2 - 1 == 1
```
3.运行测试用例
在终端中进入测试用例所在的目录,运行pytest命令即可运行所有测试用例。
```
pytest
```
4.运行指定的测试用例
可以使用nodeid来运行指定的测试用例,nodeid由模块文件名、分隔符、类名、方法名、参数构成。例如:
```
pytest ./testcase/test_demo.py::test_add
```
5.使用fixture
fixture是pytest中的一个重要概念,它可以用来为测试用例提供前置条件和后置条件。例如:
```python
# conftest.py
import pytest
@pytest.fixture()
def login():
print("登录操作")
yield
print("退出登录")
# test_demo.py
def test_cart(login):
print("购物车测试")
```
6.参数化测试
pytest支持参数化测试,可以使用@pytest.mark.parametrize装饰器来实现。例如:
```python
# test_demo.py
import pytest
@pytest.mark.parametrize("test_input,expected", [("3+5", 8), ("2+4", 6), ("6*9", 42)])
def test_eval(test_input, expected):
assert eval(test_input) == expected
```
7.使用mock
pytest可以与mock库一起使用,实现对被测代码的模拟。例如:
```python
# test_demo.py
from unittest import mock
def test_demo():
with mock.patch("os.getcwd", return_value="/test"):
assert os.getcwd() == "/test"
```
8.覆盖率测试
pytest可以使用pytest-cov插件来进行覆盖率测试。例如:
```
pytest --cov=./
```
阅读全文