Pytest 入门
一、Pytest 介绍
pytest是python的一种第三方单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高。根据pytest的官方网站介绍,它具有如下特点:
- 非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考
- 能够支持简单的单元测试和复杂的功能测试
- 支持参数化
- 执行测试过程中可以将某些测试跳过(skip),或者对某些预期失败的case标记成失败
- 支持重复执行(rerun)失败的case
- 支持运行由nose, unittest编写的测试case
- 可生成html报告
- 方便的和持续集成工具jenkins集成
- 可支持执行部分用例
- 具有很多第三方插件,并且可以自定义扩展
二、Pytest 安装
1、新建项目
Location 选择项目路径,其余保持默认。
2、安装
进入项目后,点击下方 Terminal
,安装pytest。安装命令如下:
1 | pip install pytest |
检查安装是否成功以及安装的版本,命令行命令如下:
1 | pytest --version |
执行上述命令,能够输出版本信息,那就说明安装成功啦。
3、配置默认运行方式
配置测试用例默认运行环境为 pytest ,点击左上角 File >> Settings 。
找到 Python Integrated Tools >> Testing
,配置 Default test runner
为 pytest
。
三、Pytest 命名规则
在了解pytest的测试命名规则之前,我们先需要知道 pytest 搜索用例的规则,它默认搜索规则如下:
- 如果pytest执行命令中指定了目录,则从该指定目录中开始查找测试用例文件,如果没有指定,则从当前运行目录开始查找文件,最终的结果是找到整个项目中符合命名规则的测试用例。
- 会查找整个项目中符合命令规则的测试模块,再由 测试模块–>测试类/测试函数–>测试方法 一层一层递归查找。
1、默认命名规则
pytest 的测试命名规则如下:
- 测试模块:以
test_
开头命名,如:test_login.py,或以 _test 结尾,如:login_test.py - 测试类:必须以
Test
开头命名,且测试类中不能有 init 方法 - 测试方法/测试函数:必须以
test
开头,如:test_login() 或 testRegister()
最好是将测试模块、测试方法/函数都以 test_ 开头命名,这样可读性更强,如下图:
2、自定义命名规则(了解)
pytest 框架可以通过pytest.ini
配置文件自定义命名规则,在某些特定场景下可能会用到。
在测试项目的根目录下创建pytest.ini
文件,并进行如下配置:
1 | [pytest] |
注意,在.ini文件中直接使用中文注释执行的时候会报错,实际使用如上代码时,需要将中文注释去掉。
除非是特殊情况,否则不太建议自定义命名规则。
四、Pytest 体验
1、创建测试用例
创建测试用例,命名为 test_one.py
。
1 | def inc(x): |
2、运行测试用例
运行方式有很多种,这里简介介绍右键运行和命令行运行,后面会介绍 pytest.ini 运行方式。
(1)右键运行
(2)终端运行
进入终端,使用命令 pytest + 文件名
运行。示例:pytest .\test_one.py
3、用例执行结果
4、编辑运行配置(可选)
如果以 unitest
运行测试用例,则执行以下步骤,更改测试用例运行环境为 pytest
。点击右上角 Edit Configurations 。
找到 Python tests >> pytest ,点击OK。