一,Pytest安装
1,对应环境(如果是虚拟环境需要进入虚拟环境)输入命令: pip install -U pytest
2,验证安装成功
3,pytest文档
官方文档:https://docs.pytest.org/en/latest/contents.html
二,约束
1. 所有的单测文件名都需要满足test_*.py格式或*_test.py格式。
2. 在单测文件中,测试类以Test开头,并且不能带有 init 方法(注意:定义class时,需要以T开头,不然pytest是不会去运行该class的)
3. 在单测类中,可以包含一个或多个test_开头的函数。
4. 此时,在执行pytest命令时,会自动从当前目录及子目录中寻找符合上述约束的测试函数来执行。
三,运行方式
示例:
# file_name:Test_one.py
import pytest
def func(x):
"""方法"""
return x + 1
def test_answer():
assert func(3) == 5 #进行断言
if __name__ =='__main__':
pytest.main(["-s", "Test_one.py"]) #调用pytest的main函数执行测试
1,通过python代码执行pytest.main()
(1). 直接执行pytest.main() 【自动查找当前目录下,以test_开头的文件或者以_test结尾的py文件】
(2). 设置pytest的执行参数 pytest.main(['--html=./report.html','test_login.py'])【执行test_login.py文件,并生成html格式的报告】
(3). main()括号内可传入执行参数和插件参数,通过[]进行分割,[]内的多个参数通过‘逗号,’进行分割
a) 运行目录及子包下的所有用例 pytest.main(['目录名'])
b) 运行指定模块所有用例 pytest.main(['Test_one.py'])
c) 运行指定模块指定类指定用例 pytest.main(['test_reg.py::TestClass::test_method']) 冒号分割
d)通过标记表达式运行测试
2,通过命令行执行
a) 运行目录及子包下的所有用例 pytest 目录名
b) 运行指定模块所有用例 pytest Test_one.py
c) 运行指定模块指定类指定用例pytest Test_one.py::test_answer2
d) 通过标记表达式运行测试pytest -m slow
注释:
-m=xxx: 运行打标签的用例
-reruns=xxx,失败重新运行
-q: 安静模式, 不输出环境信息
-v: 丰富信息模式, 输出更详细的用例执行信息
-V: 可以输出用例更加详细的执行信息,比如用例所在的文件及用例名称等
-s: 显示程序中的print/logging输出
--resultlog=./log.txt 生成log
--junitxml=./log.xml 生成xml报告
3,更多运行方式
a) 多进程运行cases
需要安装pytest-xdist 输入命令:pip install -U pytest-xdist
多进程运行命令: pytest test_se.py -n NUM
b) 执行用例名称包含某个关键字的用例 -k
c) 当错误个数到达给定数时,退出测试--maxfail=num
d) 重试运行cases
需要安装pytest-rerunfailures 输入命令:pip install -U pytest-rerunfailures
运行: pytest test_se.py --reruns NUM
4,Pychram配置运行方式
(1) 进入配置页面
(2) 新增配置
(3)下次运行用该配置直接运行即可