pytest基本使用
1.pytest官方文档:
官网:https://docs.pytest.org/en/latest/
PYPI地址:https://pypi.org/project/pytest/
英文文档地址:https://docs.pytest.org/en/stable/
中文文档地址:https://www.osgeo.cn/pytest/
2.pytest安装:
<1>.如果下载镜像比较慢,可以配置国内的清华镜像源:
pip install -U pip
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
<2>.cmd窗口中执行pip install pytest:
安装成功后,在cmd窗口输入: pip list,查看是否存在pytest:
在python安装目录下,Scripts目录下存在pttest.exe文件
3.pytest的优势:
pytest -- 基于unittest,更好的测试框架
优势:
1. 编写用例格式更简单
2. 更加灵活的标签和更加好用的 firtures
3. 插件丰富:pytest-selenium(集成selenium)、
pytest-html(完美html测试报告生成)、
pytest-rerunfailures(失败case重复执行)、
pytest-xdist(多CPU分发)
4. 可以使用全局配置文件 pytest.ini --- 使用pytest --help指令可以查看pytest.ini的设置选项
5. 可以很好的和CI工具结合,例如jenkins
6. 兼容unittest用例
3.pytest的基本使用:
<1>. 什么才是Pytest的标准测试用例?
1. 所在的模块(文件),以test_命名
2. 方法以test_ 或 _test命名
3. 方法可以是普通函数,也可以是类中的成员方法
类名为 Test<xxx> 并且不能带有 init 方法
<2>. pytest用例运行方式,pytest.main方法中的参数就是命令行中参数:
A.pytest.main()不加参数,默认执行项目下所有test_开头的文件
pytest.main()
B.单个文件单独运行,需要加参数:
#指定运行case目录下的文件,-s的意思是显示脚本中print日志信息
pytest.main(['./cases/test_login.py', './cases/test_get_event_list.py', '-s'])
C.跨文件运行,指定不同的文件夹执行测试用例
pytest.main(['./login/test_login.py', './event/test_get_event_list.py', '-s'])
D. 自定义配置文件运行,根据配置文件执行测试用例,会更加灵活
<3>. Pytest基本命令行的使用
无需配置额外环境变量,但是要保证你的python/Scripts目录下存在pytest.exe
pytest --help pytest [options] [file_or_dir] [file_or_dir] […..] 1. 如果不提供任何参数,pytest会在当前路径下运行 所有测试文件中的测试方法。并且会递归遍历每个子目录 2. 指定单个或多个路径或文件名 3. 指定文件中的某个测试方法 pytest xx.py:: xx 或某个测试类
<4>. Pytest命令行参数
-v 输出详细执行信息
--collect-only 展示在给定的配置下,哪些测试用例会被执行
-k 使用表达式指定希望运行的测试用例
-m 运行某个标记后的测试用例组
@pytest.mark.xxx(标记名)
pytest –m ‘xxx’ ‘xxx and yyy’ ‘xxx and not yyy’
https://docs.pytest.org/en/latest/mark.html
-s 展示print日志信息
-x 遇到失败用例停止运行。用于debug
--maxfail=num 失败num次后,停止运行测试
--lf 当一个或多个用例失败时,定位到最后一个失败的用例,并重新执行它
--ff 与lf作用基本相同,不同点是会运行完剩余的用例
--html path 出html报告,pytest自带的测试报告,比较丑,推荐结合allure出比较好看的测试报告
<5>.Pytest中的测试结果分类:
.(PASSED):测试通过
F(FAILED):测试失败
s(SKIPPED):测试未执行
x(xfail):预期测试失败
X(XPASS):预期测试失败,运行成功但不符合预期
E(ERROR):测试用例之外的代码触发了异常
<6>. 使用断言 Pytest并没有像unittest一样封装assert语句,而是鼓励用户使用 Python的原生断言 关键字 assert assert 用法:直接在assert关键字后面添加 任意布尔值表达式 assert a==b,msg='xxxxx' 当布尔表达式为false时,打印msg信息 assert a>b
<7>. pytest+allure出测试报告,allure会将测试用例的执行数据保存到xml文件中去,再利用allure的命令行将文件转换成HTML形式呈现出来
1.安装allure:
官网:http://allure.qatools.ru/,下载allrue,解压得到allure-commandline-2.13.3文件,将bin目录加入系统环境变量中
cmd窗口输入:allure --version,显示版本号即安装成功
2.安装allure-pytest:
pip install allure-pytest
3.pytest+allure出测试报告:
1.pytest 执行测试,参数 allure=/(pytest allure报告插件路径 pip安装) 保存中间数据文件 json xml
2.allure命令行(工具包解压缩你的路径下,bin环境变量 allure命令行可以使用) 指定数据文件路径 生成html测试报告