首先要保证操作系统里安装且配置正确了jdk、jenkins、python3、pip3,这些是否安装请自行检查,
确认无误后,建议先更新下:# pip3 install --upgrade pip
其次要在操作系统上确认安装了谷歌浏览器及chromedriver,没有安装的话,请自行安装。
查看版本
chromedirver -version
安装selenium :
# pip3 install selenium
安装pytest
pytest是python上的一个测试框架,兼容unittest的语法,因为之后的测试报告生成需要pytest的支持,所以我们要先装一下这个框架。
安装pytest:cmd界面输入命令:pip3 install pytest;
安装pytest-xdist(可用于分布式执行pytest的用例)
# pip3 install pytest-xdist
安装pytest-rerunfailures(错误结果自动rerun使用|可用于设置失败用例重新执行次数)
# pip3 install pytest-rerunfailures
安装allure-pytest
# pip3 install allure-pytest
安装allure-python-commons
# pip3 install allure-python-commons
安装allure_commandline (系统管理-全局工具配置)
# pip3 install allure_commandline
安装allure2
allure2是一个测试报告的框架,支持多种语言、测试框架,比起前面提到的HTMLTestRunner有着更加漂亮的界面,更加直观的图表统计,以及更为丰富的可添加信息。
allure2的界面:
安装allure2需要先配置java环境(推荐java8),以及安装pytest。
安装pytest_allure_adaptor命令:pip3 install pytest_allure_adaptor
这样allure2就安装好了。
在jenkins上使用pytest执行用例生成allure报告
jenkins是一个很著名的ci软件,这里就不多介绍了,安装完jenkins之后,我们需要先在jenkins上配置一下。
首先安装allure的插件,在jenkins---系统管理---管理插件---可选插件的列表里,勾选安装插件 Allure Jenkins Plugin 、HTML Publisher plugin;
然后进入jenkins---系统管理---全局工具配置,如下图配置好(不要完全照抄哦,参数是本地的话需要填你本地的路径):
再进入jenkins---系统管理---系统设置,拉到最下面,设置问题追踪,在Allure Report 下选择增加
Key: allure.issues.tracker.pattern
Value: http://tracker.company.com/%s
如图配置:
最后进入jenkins---系统管理---脚本命令行,输入如下命令执行权限代码,点击执行
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline';")
,如图配置:
这样我们在jenkins里的配置基本设置完了,接下来我们新建一个job来使用pytest运行我们的测试用例,并生成allure2的测试报告。
进入jenkins---新建item---输入你的任务名称---构建一个自由风格的软件项目:
General:
添加描述
选择丢弃旧的构建-保持最大构建数是3
选择限制项目运行的节点为myself(需要添加节点)
然后配置你的项目,在构建里输入命令:
python -m pytest 你测试用例的目录 --alluredir allure-result
比如windows操作系统下:
pytest "C:\Users\o_p_q_o\PycharmProjects\UItest\testcase" --alluredir allure-results
在处理命令上输入执行pytest命令:
其中:
(1)-n 3 表示并发数量为3
(2)--reruns 2 表示失败后重新执行次数最多为2次
(3)--alluredir %WORKSPACE%\allure-results 表示在workspace文件夹下创建pytest执行结果的allure-results
构建以上job时,如果脚本最后不加上 exit 0,pytest命令虽然执行成功,但构建结果失败,报错如下:
Build step 'Execute Windows batch command' marked build as failure
原因:jenkins执行windows命令时,若退出代码不为0 ,则jenkins会将构建标记为失败。
exit 0 1 2...这个是退出码,就像编写程序最后return 0一样,我们可以通过设置不同的退出码来提示用户脚本运行到那一步退出的,一般情况下,0代表正确执行后退出,非0代表多多少少有问题。
linux操作系统下:
注:上图脚本里工程空间${WORKSPACE}后面的相对路径就是下面构建后操作里要填写的相对路径,切记要保持一致。
在Post-build Actions下建立 Allure Report
再增加一个构建后操作,选择Allure Report,path里填上报告中间文件目录,也就是上面命令里的allure-result,再点击高级,设置最终生成报告的目录,在Report path里填上allure-report。
Path里填allure-results,与构建命令后面的一致
Report path里填allure-report
(1)在Results里输入你的allure执行结果,即第1步里的“allure-results”
(2)在Report path里输入生成报告的路径,这里填写的是allure-report,即在workspace下建立allure-report文件夹来保存测试报告
这里解释一下,allure是这样的,执行第一个命令:
python -m pytest 你测试用例的目录 --alluredir allure-result
的时候,其实是执行你的测试用例,并把结果生成一个中间文件,用于生成最终的报告,也就是说,这里生成的并不是最终的报告,allure-result只是中间文件的路径,这个路径需要和下面的构建后操作AllureReport里的Results的Path的值一致。
而Allure Report这个构建后操作其实是执行的另一个命令,大家在执行后的Console Output里也能看到这个命令,这里贴出来:
[Allure report] $ "C:\Program Files (x86)\Jenkins\tools\ru.yandex.qatools.allure.jenkins.tools.AllureCommandlineInstallation\allure\bin\allure.bat" generate "中间文件的路径" -c -o "最终报告的路径"
解释一下这个命令,C:\Program Files (x86)\Jenkins\tools\ru.yandex.qatools.allure.jenkins.tools.AllureCommandlineInstallation\allure\bin\allure.bat这个路径是allure转换报告工具的路径,这个工具你也可以单独下载,这里暂时不提;
generate是把中间文件生成最终报告的指令, -c -o 前面的是你中间文件的路径,之后的是最终生成报告的路径。
至此,我们的无人值守执行用例并自动生成报告就算实现了,我们可以给这个job设置执行时间点或者把这个job挂在别的构建项目下实现定点执行和定时机执行。
当然,还有最后一步,光是执行还不行,我们需要执行之后自动给我们发出通知,告诉我们执行的结果,这里用到的是jenkins的邮件通知插件Extended E-mail Notification:
下面讲解一下怎么设置邮件通知。
首先我们安装这个插件,还是jenkins---系统管理---管理插件,然后在可选插件里搜索Extended E-mail Notification并安装。
安装插件:Email Extension
进入系统管理--系统设置,Jenkins Location设置系统管理员邮件地址为你的发件邮箱
安装完之后,进入jenkins---系统管理---系统设置,先找到Jenkins Location栏,设置系统管理员邮件地址为你的发件邮箱,然后找到Extended E-mail Notification栏,这里我以QQ邮箱举例设置,
先设置SMTP server为 smtp.qq.com;
Default user E-mail suffix填 @qq.com;
然后点开高级,勾选Use SMTP Authentication;
User Name填你的发件地址,和管理员地址保持一致;
Password填你的QQ邮箱的smtp服务授权码,而不是你的QQ密码,不知道的话自己去邮箱的设置页里找;
Use SSL勾选;
SMTP port填465;
下面的Default Recipients填你的收件地址;
Default Content内容稍微改一下,改为:
$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS:
Check console output at ${BUILD_URL}allure/ to view the results.
下面的Enable Debug Mode记得勾选,方便发送失败看日志,再点开Default Triggers设置你邮件的发送时机,到这里插件的设置就完毕了。
然后回到你上面job的配置页面,增加一个构建后操作Editable E-mail Notification即可。
添加邮件,主要是收件人(成功、失败的邮件可以分别发送给对应的收件人)、内容可以选择默认的也可以自己定制
现在,项目构建完之后就会自动把报告的地址发送给你预定的邮箱。
邮件内容:
构建任务,任务完成后可以直接查看测试报告: