关于这篇文章
记录我在工作的 pytest 实践经验,类似于 How to …
- 【不是】以 pytest 功能为导向的文档
- 【是】以我工作时遇到问题为导向来组织文档
- 配合本代码库:https://github.com/paperplane110/easy_pytest
- 一边看一边敲命令,能更好理解
希望能帮助到大家 🤝
各位好,欢迎各位来关注我的个人网站:https://tyyuan110.com/
我目前就职于 DiDi 自动驾驶,从事测试开发,我会在上面定期更新相关技术博客(前端、测开、面经等),谢谢!
目录
0. 安装本项目(可跳过)
git clone
cd learn_pytest
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
1. 组织测试项目
面对一个空文件夹、一个被测对象,我遇到的第一个问题就是,我如何组织测试项目,如何组织测试脚本。
按照文档指导,我总结了以下规则:
测试项目的结构
- 测试项目 tests/ 与源码 src/ 平级
- 测试项目 tests/ 可组织任意层级的子文件夹
- 测试项目 tests/ 必须包含
__init__.py文件,否则 pytest 无法识别测试脚本
测试脚本的命名规则
- pytest 无法识别 test.py 文件
- 测试脚本 test_*.py 必须以
test_开头,否则 pytest 无法识别测试脚本 - 测试脚本 *_test.py 必须以
_test结尾,否则 pytest 无法识别测试脚本
.
├── README.md
├── src <--- 源码项目
│ └── package
│ ├── __init__.py
│ └── main.py
└── tests <--- 测试项目
├── __init__.py
└── test_suite_1 <--- 测试套件
├── __init__.py
└── test_main.py <--- 测试脚本
现在我们试着来进行第一次测试:
# -v 打印更多信息,显示测试 parent_suite and case_name
pytest -v
# ...
# ==================== test session starts =====================
# tests/suite_1/test_main.py::test_plus_int PASSED [ 25%]
# tests/suite_1/test_main.py::test_plus_float PASSED [ 50%]
# tests/suite_1/test_main.py::test_minus_int PASSED [ 75%]
# tests/suite_1/test_main.py::test_minus_float PASSED [100%]
# ===================== 4 passed in 0.01s =======================
2. 测试函数的组织
现在我们来看下我们的测试脚本 test_main.py
import pytest
from src.package.main import plus, minus
def test_plus_int():
assert plus(1, 2) == 3
def test_plus_float():
...
def test_minus_int():
...
def test_minus_float():


7145

被折叠的 条评论
为什么被折叠?



