pytest自动化测试框架搭建,并生成allure测试报告
一、pytest的安装
1、介绍
1. 简单灵活,容易上手;支持参数化; 测试用例的skip和xfail 处理;
2. 能够支持简单的单元测试和复杂的功能测试,还可以用来做 selenium/appium等自动化测试、接口自动化测试 (pytest+requests);
3. pytest具有很多第三方插件,并且可以自定义扩展, 比较好 用的如 pytest-allure(完美html测试报告生成) pytest-xdist (多CPU分发)等;
4. 可以很好的和jenkins集成
2、安装
pip install pytest
3、pytest脚本编写
测试用例命名规范
- pytest 默认收集以下规则的测试用例:
- 测试文件以
test_
开头(如test_sample.py
) - 测试类以
Test
开头(如class TestExample:
) - 测试函数/方法以
test_
开头(如def test_demo():
)
- 测试文件以
- 验证方法:
pytest --collect-only # 查看是否收集到测试用例
如果输出为空,说明用例未被正确识别。
pytest详细使用介绍请参考该文章
- 脚本如下:
# -*- coding: utf-8 -*-# test_Pytest.py文件
# coding=utf-8import pytestclass Test_Pytest():def test_one(self, ):print("----start------")pytest.xfail(reason='该功能尚未完成')print("test_one方法执行")assert 1 == 1def test_two(self):print("test_two方法执行")assert "o" in "love"def test_three(self):print("test_three方法执行")assert 3 - 2 == 1if __name__ == "__main__":pytest.main(['-s', '-r', 'test_Pytest.py', 'test_Pytest.py'])
运行结果如下图:我们可以看到该用例中pytest.xfail()方法之前的代码运行了,之后的不再运行;结果中有一条用例被标记为xfail。
4、pytest-html生成报告
pytest-HTML是一个插件,pytest用于生成测试结果的HTML报告。兼容Python 2.7,3.6
pytest-html
1.github上源码地址【https://github.com/pytest-dev/pytest-html】
2.pip安装
pip install pytest-html
3.生成html报告
$ pytest --html=report.html
html报告
1)打开cmd,cd到需要执行pytest用例的目录,执行指令:pytest --html=report.html
2)执行完之后,在当前目录会生成一个report.html的报告文件,显示效果如下
指定报告路径
1)直接执行"pytest --html=report.html"生成的报告会在当前脚本的同一路径,如果想指定报告的存放位置,放到当前脚本的同一目录下的report文件夹里
pytest --html=./report/report.html
2.如果想指定执行某个.py文件用例或者某个文件夹里面的所有用例,需加个参数。具体规则参考【pytest文档2-用例运行规则】
报告独立显示
1)上面方法生成的报告,css是独立的,分享报告的时候样式会丢失,为了更好的分享发邮件展示报告,可以把css样式合并到html里
pytest --html=report.html --self-contained-html
显示选项
默认情况下,“ 结果”表中的所有行都将被展开,但具测试通过的行除外Passed。
可以使用查询参数自定义此行为:?collapsed=Passed,XFailed,Skipped。
更多功能
1)更多功能查看官方文档【https://github.com/pytest-dev/pytest-html】
二、allure测试报告
allure官网 : Qameta Software - Allure Report
allure文档 : Allure Framework
1、下载
allure的官网下载地址:
官网下载
注意:官网时常访问失败,可以访问以下网址:
备用下载
选择一个版本(windows下载.zip包就可以)
Note: 此处下载安装了2.30.0
2、解压
此处解压后放在了D盘
3、配置环境变量
把bin目录加入PATH环境变量
4、验证是否配置成功
Ctr+R ->重新打开一个cmd 窗口 --> allure或者 --> allure --version
终于ok啦~
5、 安装 allure-pytest插件
pip install allure-pytest
6、生成Allure报告
Allure测试报告的生成:
1. 安装allure测试报告
2. pytest --alluredir 指令用于将测试结果的数据保存在allure结果之中或者pytest [测试文件] -s -q --alluredir=./result #--alluredir用于指定存储测试结果的路径)
3. allure serve ./allure_report
这个指令是生成临时allure测试报告。并提供web服务以供访问
生成的测试报告保存在用户的缓存临时文件夹下,路径无法修改
4. allure generate ./allure_report -o ./report_allure
这个指令是将allure采集的测试数据生成为完整的allure测试报告,保存在指定路径下。查看测试报告
方式一:直接打开默认浏览器展示报告allure serve ./result/
方式二:从结果生成报告
生成报告
allure generate ./result/ -o ./report/ --clean (覆盖路径加--clean)
打开报告
allure open -h 127.0.0.1 -p 8883 ./report/
7. 运行Allure
运行指令: pytest --alluredir ./allure_report
将测试结果的数据保存在allure结果之中,同时生成一个测试报告文件。
allure serve ./allure_report 这个指令是生成临时allure测试报告。并提供web服务以供访问。生成一个完整的测试报告。
因为pytest下的allure测试报告生成,需要调用allure指令,这个指令和pytest没有关系,所以想要一步实现数据的记录以及报告的生成,记得添加os.system()方法来调用allure指令。但是,可能allure指令调用会失败。
如果是通过指令运行,集成到pytest之中,生成allure测试报告的话,这个测试报告想要分享,可以在Jenkins中进行集成的方式来做分享(也就是通过链接进行分享的模式)。
如果想要关联持续集成,做到更加完整的自动化测试效果,可以通过allure来实现测试报告的生成。
三、pytest-allure-adaptor
1、pytest-allure-adaptor介绍
-
核心功能:
pytest-allure-adaptor
允许用户在 pytest 测试框架中生成 Allure 风格的测试报告。Allure 报告提供了丰富的可视化信息,包括测试用例的执行状态、步骤、附件、历史趋势等,有助于更好地理解和分析测试结果。 -
集成优势:通过该插件,用户可以在 pytest 中方便地使用 Allure 的特性,如标记测试用例、添加步骤描述、上传附件等,从而生成更加详细和有用的测试报告。
2、 pytest-allure-adaptor与Allure-pytest的关系
-
allure-pytest
的插件,它是pytest-allure-adaptor
的替代品,提供了更现代和灵活的集成方式。 -
allure-pytest
支持更多的 Allure 特性,并且与最新版本的 pytest 和 Allure 命令行工具兼容性更好。 -
安装方法:
pip install allure-pytest
-
使用方法与
pytest-allure-adaptor
类似,但提供了更多的配置选项和装饰器。