文章目录
- 0. 前言
- 1. 命令与配置
- 1.1. pytest 的基本使用
- 1.2. 配置文件
- 2. 代码编写
- 2.1. 推荐的单元测试源码格式
- 2.2. 文件/类/方法命名规则
- 2.3. assert 相关
- 2.4. pytest fixtures
0. 前言
- 简介:pytest是Python的测试框架,是第三方提供的,需要额外安装包。
- 安装方法:
pip install -U pytest
,之后就可以通过pytest --version
来检查是否安装。 - 官方资料:官方文档
1. 命令与配置
1.1. pytest 的基本使用
python -m pytest [...]
与pytest [...]
的区别
- 前者将命令行路径添加到了
sys.path
中。
- 如果失败x次则停止
- 选择进行单元测试的目标
- 测试结果展示
-r
:在测试完成后有一个简短的统计,如下图- 在
-r
后可选择合适的选项,选择展示内容。
- 测试失败时使用PDB,
pytest --pdb
1.2. 配置文件
2. 代码编写
2.1. 推荐的单元测试源码格式
- 官方文档:Choosing a test layout / import rules
- 作用:介绍单元测试源码放在哪里。
- 方法一:单元测试源码与项目源码放在不同的路径下。
- 注意事项:测试文件必须不重名。
- 好像这种用得比较多。
- 方法二:单元测试源码与项目源码放在相同路径下。
2.2. 文件/类/方法命名规则
- 官方文档:Conventions for Python test discovery
- 功能:执行
pytest
命令时会选择那些文件、方法、类进行单元测试。 - 基本流程:
- 第一步:指定文件/文件夹的搜索范围。
- 如果在
pytest
命令行中指定了文件/文件夹,则会处理这些文件/文件夹中的数据。 - 如果
pytest
没有指定文件/文件夹,那就会从配置文件 testpaths 选项中指定的路径,或当前路径中搜索文件/文件夹。 - 会搜索指定路径子目录中的内容,但有一个例外,那就是配置文件 norecursedirs指定的路径不会进行搜索。
- 第二步:在指定搜索范围内选择文件,即所有命名格式为
test_*.py
或*_test.py
的文件。 - 第三步:在指定文件中寻找合适的方法。
- 所有
test
开头的方法(不属于任何类的方法)。 - 所有
Test
开头类中,test
开头的成员方法。
2.3. assert 相关
- 官方文档:The writing and reporting of assertions in tests
- 单元测试中基本都有
assert
语句,pytest 中使用python默认的即可。 - 对于一些预期会出现的 exception,且单元测试不想因为这些问题而 fail,那么:
- 可以使用
pytest.raises(XxxError, match=r"some reg string")
2.4. pytest fixtures
- 官方文档:pytest fixtures: explicit, modular, scalable
- 作用:我也不知道该怎么翻译,大概就是在测试类中可以使用的一些变量(有固定的变量名)。
- 没细看,需要的时候再研究。