1. 安装
1.1 安装 pytest
bash
pip install pytest
1.2 安装第三方报告插件 pytest-html
这个是非必要的,也可以安装其他第三方插件。
bash
pip install pytest-html
2. 编写测试用例
- 测试用例文件名必须满足的格式:
test_*.py, 或者*_test.py - 在这些测试文件中,
类名必须以Test开头;函数名必须以test开头。
3. 运行测试用例
3.1 执行全部用例
- 方式一:
- 在命令行窗口,进入自动化项目的根目录,执行命令
pytest即可。
- 在命令行窗口,进入自动化项目的根目录,执行命令
- 方式二:
- 在 pycharm (或其他IDE)中的 terminal 中,执行命令
pytest。
- 在 pycharm (或其他IDE)中的 terminal 中,执行命令
需要特别注意的是:
直接执行 pytest 命令不会将当前目录设置为模块搜索路径
所以更推荐执行命令 python -m pytest
bash
python -m pytest
以上命令都是执行当前目录下的所有的测试用例。
3.2 挑选用例执行
指定一个模块(一个python文件)
比如,只执行 test_incorrect_login.py 文件:
bash
python -m pytest cases\login\test_incorrect_login.py
指定一个目录
比如,执行 cases 目录下的所有测试用例
bash
python -m pytest cases
指定多个目录
比如,执行 cases1 ,cases2\login 目录下的所有测试用例
bash
python -m pytest cases1 cases2\login
指定模块中的一个类
比如,执行 cases\login\test_incorrect_login.py 模块中的 Test_incorrectLogin 类
bash
python -m pytest cases\login\test_incorrect_login.py::Test_incorrectLogin
指定模块中的一个类中的方法
比如,执行 cases\login\test_incorrect_login.py 模块中的 Test_incorrectLogin 类 中的 test_c001001 方法
bash
python -m pytest cases\login\test_incorrect_login.py::Test_incorrectLogin::test_c001001
指定 目录、模块、类、方法 的名字
可以使用命令行参数 -k 后面加名字的一部分来挑选要执行的测试项
比如,只执行名字中包含 c001001 的用例
bash
python -m pytest -k c001001 -sv
注意,-k 后的参数
- 可以是测试函数的名字,可以是类的名字,可以是模块文件名,也可以是目录名字
- 对大小写敏感
- 不一定要完整,可以是名字其中的一部分
- 可以用 not 表示选择名字中不包含,比如
bash
python -m pytest -k 'not c001001' -sv
- 可以用 and 表示选择名字同时包含多个关键字,比如
bash
python -m pytest -k "incorrect and 密码2" -s
- 可以用 or 表示选择名字 包含指定关键字之一即可,比如
bash
python -m pytest -k "incorrect or 密码2" -s
3.3 执行用例时的参数解释
比如,执行用例
bash
python -m pytest -k 'not c001001' -sv
-m
将pytest 作为模块运行,确保使用当前 python 环境中的 pytest。
-k
过滤测试。比如,参数后面跟需要执行的包含某个名字的用例。
-s
显示输出 。允许测试中的所有print 语句输出在控制台。
-v
详细模式。输出更详细的测试结果信息,比如每个测试用例的名称和状态。
-sv
顾名思义,-s 和-v 的组合模式。
-x
遇到第一个失败用例时立即停止测试
--if(两个 - )
仅重新运行上一次失败的测试测试
-m <标记名>
只运行用 @pytest.mark.<标记名> 装饰过的测试