pytest+allure+jenkins - 持续集成平台生成allure报告
allure是什么
有非常多的优秀的测试框架,但却是有非常少优秀的报告工具可以展示非常清楚的用例执行过程和结果。
allure是一款开源的,专门用来展示测试结果的工具,目的是希望团队内部每一个人都可以看到非常清楚的测试结果。
allure可以与非常多的著名测试框架做集成。
像java语言,可以与junit4,junit5,TestNG测试框架集成。
python语言,可以与pytest,behave,nose测试框架集成。
allure会将测试用例的执行数据保存到xml文件当中,再利用allure的命令行将文件转换成html形式呈现出来。
Allure官方文档:https://docs.qameta.io/allure/
以下内容总结来自小简的博客:https://www.cnblogs.com/Simple-Small/p/11512337.html
1.安装allure命令行
官网提供了每个平台的,命令行安装方式。
以下是手动安装方式,适用于各平台:
1、从Maven Center下载最新的安装包:
http://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/
目前是2.12.1的版本。选择个zip包下载。
2、将包解压到任何一个目录。建议不要选C盘或者路径很深的。比如D:\allure-command-2.12.1
3、跳转到解压后的bin目录下面,windows下执行allure.bat。其它平台执行allure.
4、配置allure的环境变量:
配法:我的win7中是在系统变量的path中加入此路径 D:\allure-commandline-2.13.5\allure-2.13.5\bin
小简的win10如下图:
5、在命令行当中运行allure —version。成功即安装成功。
2. allure与pytest的集成
在allure安装完成之后,需要与pytest集成,能够在pytest运行完成之后,生成allure可识别的文件 。
2.1、安装pytest的allure支撑插件。
pip命令行:pip install allure-pytest
(此处以后可能会更新,以allure官方文档说明为准)
2.2、在执行pytest命令时,添加allure命令参数:—alluredir=Outputs/allure
(相对路径,与main函数在当前工程目录下的相对路径)
if __name__ == '__main__':
pytest.main(["-s","-v","--html=Outputs/reports/pytest.html",
"--alluredir=Outputs/allure"]) # allure文件生成的目录
需提前在outputs目录下新建一个allure文件夹
2.3、等待pytest执行完所有的测试用例,在Outputs/allure下会生成一些文件。
2.4. 把allure文件(一堆json/txt格式的文件)生成漂亮的html报告:
2.4.1(不推荐)在cmd命令行当中,进入相对路径去执行:allure serve 测试结果文件目录,就会生成漂亮的html报告。-已尝试成功
进入相对路径并生成报告需敲三行命令:
一般会自动打开浏览器 打开此报告地址,如果没有就手动复制出来贴进浏览器中打开 即可看allure报告。
2.4.2(推荐方法)或者在pycharm的终端terminal里执行“allure serve 相对路径” 也可生成漂亮的html报告
—尝试不成功,提示:'allure' 不是内部或外部命令,也不是可运行的程序或批处理文件。
自己百度说要以管理员身份运行Pycharm才行,注意上面cmd是以管理员运行的,所以成功了。以后有空时可看下此问题如何解决--过了几天试 又自己好了。
注意要在相对路径所在的目录下 执行“allure serve 相对路径” 才可把里面的文件转化为html报告。
点击链接打开allure报告如下图所示:
缺点:每次要输入命令行(allure serve 相对路径)才会生成allure报告,麻烦
解决方法:与jenkins集成后就不用了
Allure与jenkins集成
集成步骤如下:
2.1、在jenkins上安装allure插件。
Step1: 去jenkins插件网站上下载allure插件最新版本(.phi文件):
http://mirrors.jenkins-ci.org/plugins/allure-jenkins-plugin/
Step2: 打开jenkins,在系统管理 —> 插件管理 —>Advanced —> Upload Plugin
上传.phi格式的插件,点击[上传]操作。
会自动跳转到以下页面。此处黄色球的提醒是指:此插件已经安装了,jenkins需要重启使此更新生效。
若是第一次安装,应该是蓝色球。
可将jenkins服务重新重启,使安装的插件生效。
2.2、在jenkins 全局工具当中配置allure命令行。
在 系统管理 —> 全局工具配置(global tool configration) —> 当中做以下配置(allure和jdk),配置完并保存、应用:
上图中取消勾选“自动安装”,上面的安装路径才会显示出来,待出来了再勾选“自动安装”
2.3、在Job当中,配置allure报告展示:
前提:main_pytes.py文件中已经设置了参数,让其生成了allure报告的一堆json/txt文件。(见allure与Pytest集成内容),现在只是通过jenkins把其显示为漂亮的html报告
构建后操作下拉项中选择“allure report”,然后会出现填写项如下图,填写allure报告存放路径
(相对于工作空间的相对路径,此处是自定义的工作空间,即代码存放地:D:\py22_Web_Study\web自动化-阶段3-pytest应用(2)-fixture骚操作+参数化+标记用例-2019-1211,直接写此段后面的地址即可)
配置完成之后,立即构建此工程。连续构建几次,有了历史记录之后
2.4 tips:如果上述实战中还使用到了分布式 用小弟机来执行的任务,会常遇以下报错:
主机分配给小弟机的任务,查看输出日志时发现前面的脚本都正常运行了,但最后生成allure报告有报错,如下图提示的是java home的路径用错了,why?
答案:因为添加节点小弟机时,有个“工具位置”没设置,所以默认用了主机上的工具位置,所以找不到。
解决办法:访问主机上的jenkins――>Manage jenkinsàmanage nodes and cloudsà进入小弟机的配置页面重新设置java路径:
jenkins全局工具配置中 allure也是配置的自动下载,执行机上如果没有也会自动下载到上图中地址。
节点属性中的环境变量,一般不用配,会自动用小弟机上的环境变量配置。但是如果报错提示识别不到本机环境,比如识别不到python,说python不是内部环境,那就需要特别的配下环境变量:(path全部搬过来)