Jenkins 集成 Python 自动化测试项目教程

发布于 更新于
本文目录
  1. 1. jenkins的安装
  2. 2. jenkins初始化
  3. 2.1 解锁Jenkins
  4. 2.2 安装插件
  5. 2.3 创建第一个管理员用户
  6. 2.4 配置Jenkins URL
  7. 3. 配置插件升级站点国内镜像
  8. 4. 创建python自动化项目
  9. 4.1 新建item
  10. 4.2 General配置
  11. 4.3 源码管理
  12. 4.4 构建触发器
  13. 4.5 构建环境
  14. 4.6 构建
  15. 5. 配置HTML报告
  16. 5.1 安装HTML Publisher插件
  17. 5.2 配置HTML Publisher插件
  18. 5.3 查看html报告
  19. 5.4 配置csp
  20. 5.4.1 临时解决
  21. 5.4.2 永久解决
  22. 6. 配置邮件
  23. 6.1配置管理员邮箱
  24. 6.2 配置jenkins默认邮件通知
  25. 6.3 配置Email Extension Plugin
  26. 6.4 在项目中配置发送邮件
  27. 6.5 发送html格式内容的邮件
  28. 7. 集成Allure报告
  29. 7.1 下载Allure插件
  30. 7.2 配置allure服务命令
  31. 7.3 项目中配置allure

技术文章自动化测试

新手在将python自动化测试项目集成到jenkins时会遇到很多坑,本文将从安装开始一步一步演示集成的全过程。希望能帮到大家。

新手在将python自动化测试项目集成到jenkins时会遇到很多坑,本文将从安装开始一步一步演示集成的全过程。希望能帮到大家。

1. jenkins的安装

jenkins安装方式有两种:

  1. 安装成系统服务

  2. 下载war包以java命令启动

本文只是一个供小白学习的简单教程,不具体讲各种操作系统上的jenkins安装,这部分可以看官网教程。

建议:

  1. win10家庭版不要安装成系统服务,可能会出现各种问题

  2. 关闭各种杀毒,防火墙之类的软件,可能会导致不能正常安装

如果实在是安装不成功,可以下载我提供的免安装版,注意jenkins依赖java环境,所以要提前安装JD

链接:https://pan.baidu.com/s/1tg9mRXezx7MwviC9jNERsw

提取码:vbjh

下载后解压在非中文路径下,然后双击jenkins.exe程序即可,后面要使用的插件都下载好了,当然这只是供大家学习。生产环境下会部署到linux服务器上。

2. jenkins初始化

2.1 解锁Jenkins

安装好jenkins首次进入时,你会看到如下页面

image20201228143706207.png

按照页面上的路径找到初始化管理员密码,这个文件没有后缀,所以windows系统的童靴不要双击,右键使用记事本或者任意的文本编辑工具打开即可。复制密码填入输入框点击继续。

jenkins接下来会连接网络(会连接外网),如果你的电脑不能连接网络,将会打开如下页面:

image20201228144430559.png

尽量不要出现安装时断网的情况,如果其他软件都可以访问互联网,还是出现这个页面,请尝试科学上网后再重复这个步骤。

2.2 安装插件

正常情况下,填完管理员密码后会打开如下页面:

image20201228145743293.png

点击安装推荐的插件,会跳转到下面的页面:

image20201228145842091.png

jenkins会自动安装页面中显示的插件,根据你的网络情况,这个过程会持续数分钟。

2.3 创建第一个管理员用户

插件安装完后会自动跳入管理员创建页面:

image20201228150616971.png

填写管理员信息后点击保存并完成。

2.4 配置Jenkins URL

Jenkins URL 用于给各种Jenkins资源提供绝对路径链接的根地址。 这意味着对于很多Jenkins特色是需要正确设置的,例如:邮件通知、PR状态更新以及提供给构建步骤的BUILD_URL环境变量。

image20201228150837466.png

学习时,我们使用默认值即可,点击保存并完成,会出现Jenkins已就绪的页面。

image20201228150929054.png

点击开始使用Jenkins会进入Jenkins管理的首页面,至此初始化工作完成。

3. 配置插件升级站点国内镜像

后面我们会用到很多插件,而jenkins默认的插件升级站点是外网,经常会连不上或者速度非常慢,我们可以配置成国内的镜像。

进入Manage Jenkins > Manage Plugins > Advance(高级)

image20201228152026676.pngimage20201228152047396.png

滚动到页面底部

image20201228152130236.png

将升级站点改成:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

然后点击提交, 然后点击立即获取,如果正常页面会刷新,立即获取按钮前会出现多少秒之前获取更新信息的字样。

image20201229140845550.png

也有一些文章提示还要去配置json文件中替换www.google.com等,如果你只配置了升级站点不成功可以尝试。

在Jenkins2.270版本上,只配置升级站点即可。

4. 创建python自动化项目

4.1 新建item

点击jenkins首页面的新建Item

image20201228153508441.png

在打开的页面中输入项目名称,选择Freestyle project(自由风格项目),再点击确认,进入项目配置页面。

image20201228153748461.png

4.2 General配置

General配置中有很多选项,每个选项的后面有问号,点击会介绍当前选项的作用,都是见名思议,后面的配置也是如此。

image20201228154142889.png

为了学习简单,我们演示的项目配置为本地项目。点击高级,选中使用自定义的工作空间,在目录中填入项目的根目录绝对路径。

image20201228154518412.png

这个目录就是工作空间目录,后面很多配置都是以这个路径为标准使用相对路径来配置。

4.3 源码管理

我们这里配置了自定义工作空间,这里就勾选无,如果是想配置git管理的远程仓库就勾选Git。

image20201228154733777.png

勾选了远程仓库jenkins会从仓库下载代码到本地工作空间,默认在.jenkins\workspace下以项目名作为名字的文件夹中。

4.4 构建触发器

所谓触发器就是设置自动运行项目的条件。有多种方式,这里我们选择使用定时构建。

image20201228155311618.png

勾选Build periodically,点击问号有设置详细说明

image20201228155509557.png

我们设置日程表为H 23 * * *,表示每天晚上23点到24点间随机一个时间进行构建。插件推荐使用H来模糊指定,而不是精确指定具体时间,造成构建任务过于集中。

4.5 构建环境

我们当前的项目不需要额外的构建环境,为了在控制台中显示时间戳,可以勾选Add timestamps to the Console Output,其他的按需设置。

image20201228160045735.png

4.6 构建

构建就是启动项目,其实本质上就是启动项目执行的命令。点开增加构建步骤按钮后,会出现多个选项

image20201228160358431.png

对于python项目来说,一般只会用到两个:

  1. Execute Windows batch command 执行windows批处理命令

  2. Execute shell 执行shell命令(mac,linux)

这里我们选择执行windows批处理命令,然后在输入框中输入启动项目的命令,可以执行多条命令。注意,这里的命令当前路径为工作空间。

image20201228160947419.png

这样,一个python项目的基本配置就完成了,点击保存。然后点击项目管理首页左侧的BuildNow进行第一次构建,检查配置是否正确。

image20201228161151249.png

构建完成后,结果是否正确,会在构建序号前通过不同颜色的小球来表示,蓝色表示成功,红色表示失败,黄色表示警告,这个跟构建命令的方式有关。

image20201228162011506.png

点击构建序号,进入具体构建的管理页面,可以查看控制台输出,查看日志来调试。

image20201228162211277.pngimage20201228162245387.png

5. 配置HTML报告

如果你的项目单独生成了html格式的报告,想要在jenkins上发布报告需要安装HTML发布插件。

5.1 安装HTML Publisher插件

点击Manage Jenkins > Manage Plugins > 可选插件,搜索html,选择HTML Publisher,点击install without restart

image20201228163516241.png

开始安装

image20201228163634357.png

如果前面升级镜像配置ok,然后人品够好的话,很快就安装好了

image20201228163704083.png

5.2 配置HTML Publisher插件

进入对应项目管理页面,点击配置>构建后操作>增加构建后操作步骤,在打开的弹框中选择Publish HTML reports,

image20201228164050480.png

点击新增

image20201228164308829.png

然后在HTML directory to archive中填写html报告的相对路径(相对工作空间)

image20201228164611029.png

再在**Index page[s]**中填写报告文件名,可以填写具体报告文件名,也可以使用 Ant patterns

image20201228164918555.png

这里我们填写***.html**表示所有的html为后缀的文件。

最后保存配置。

5.3 查看html报告

再次构建项目,然后刷新项目管理页面,会在工作区上多了一个HTML Peport的选项,点击即可查看html报告

image20201228165357022.pngimage20201228165551476.png

5.4 配置csp

我们会发现html报告中的样式丢失了,原因是Jenkins中的CSP(Content Security Policy,内容安全策略)的默认配置为一个非常严格的权限集,以防止Jenkins用户受到恶意的HTML/JS文件的攻击。

默认,该权限集会设置为:

sandbox; **default**-src 'none'; img-src 'self'; style-src 'self';

在这个配置下,只允许加载:

  1. Jenkins服务器上托管的css/js文件

  2. Jenkins服务器上托管的图片文件

如下形式的内容都会被禁止:

  1. javascript

  2. plugins

  3. html中的内联样式,以及引用外站的css文件

  4. html中的内联图片

  5. frames

  6. web fonts

  7. ajax

  8. ...

非常严格,所以我们的html报告没法正常展示样式了。

要解决该问题,就是修改csp的默认配置。

我们有两种方案来解决这个问题:

5.4.1 临时解决

进入Mange Jenkins > Script console

image20201228171228313.png

输入如下命令,并点击运行

System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")

image20201228171343295.png

如果出现result表示执行成功

image20201228171421314.png

再次进行构建,新生成的HTML报告就可以正常展示样式了。注意之前构建生成的HTML报告依旧无效。且jenkins服务重启后,csp会恢复默认。

5.4.2 永久解决

当前jenkins没有提供配置来解决此问题,我们只有在每次启动Jenkins时重新修改该安全策略。windows下jenkins安装目录下有一个jenkins.xml文件(其他方式请查找对应的配置文件),

image20201228173315680.png

里面包含jenkins启动命令,我们可以在<arguments>标签中添加csp的设置参数,注意设置在-jar之前,改之前记得备份这个文件,防止修改错误。

image20201228172416683.png

在临时方案中我们修改了csp为空,表示关闭了内容安全策略,这其实存在很大的安全隐患,正确的做法,我们应该结合项目的实际情况,选择对应的安全策略。例如,我们的html报告中使用了百度的cdn加速,所以需要配置运行加载对应域名的css样式,所以配置如下:

-Dhudson.model.DirectoryBrowserSupport.CSP="sandbox; style-src 'self' libs.baidu.com;"

除此之外,csp还有很多精细的配置,详细配置可参考Content Security Policy Reference。

配置好后,重启服务,如果出现启动失败,检查是否配置错误,前后空格,表点符号。完整的arguments的配置如下:

<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -Dhudson.model.DirectoryBrowserSupport.CSP="sandbox; style-src 'self' libs.baidu.com;" -jar "D:\Program Files\Jenkins\jenkins.war" --httpPort=9090 --webroot="D:\Program Files\Jenkins\war"</arguments>

注意:不要复制里面的war文件,webroot的路径,要结合你自己的项目。

按照这种方案重启后,所有的html报告样式都可以正常显示。

如果是下载我提供的免安装版的jenkins,修改目录下的config.yaml文件中的csp配置即可

image20201228173454155.pngimage20201228173510560.png

6. 配置邮件

构建后,我们往往需要通过发邮件的形式通知相应人员。jenkins的默认的邮件只有构建失败时才会发送邮件,且不支持自定义邮件内容。所以需要安装插件**Email Extension Plugin**,然后配置邮件

6.1配置管理员邮箱

进入Manage Jenkins>Configure System>系统管理员邮件地址,填写你用来发送邮件的邮箱。

image20201228181307138.png

6.2 配置jenkins默认邮件通知

继续往下滚动到最后,配置邮件通知,点击高级展开所有选项,详细配置如下:

image20201228182116943.png

配置好后,点击最下面的通过发送测试邮件测试配置来检查是否配置成功。

image20201228182303944.png

如果能够收到邮件表示邮件通知配置成功。现在先保存一下。

6.3 配置Email Extension Plugin

进入Manage Jenkins>Configure System>Extended E-mail Notification,同样点击高级展开高级配置选项,详细配置如下:

image20201228191238758.png

往下翻到最后有一个触发配置,默认是失败触发,

image20201228191434316.png

点击按钮展开配置,选择always

image20201228191532024.png

保存。

6.4 在项目中配置发送邮件

进入项目配置页面,点击增加构建后操作步骤,选择Editable Email Notification

image20201228191700279.png

配置发件邮箱和收件邮箱,收件邮箱如果有多个可以用逗号隔开

image20201228191921861.png

保存后,构建测试测试是否发送邮件。如果不成功,可以在构建日志中查看失败原因,然后重复上面的步骤。

6.5 发送html格式内容的邮件

Email Extension Plugin插件支持html格式的内容。

再次进入项目配置页面,来到邮件服务配置项,设置Content Type为HTML

image20201228192311127.png

然后在Default Content可以写入HTML模板,并且模板中可以使用jenkins对应的环境变量。

image20201228192742894.png

例如我使用的模板效果如下:

image20201228192820637.png

7. 集成Allure报告

Allure报告是非常好用的测试报告服务。jenkins能很方便的集成Allure。

7.1 下载Allure插件

在插件管理中下载allure

image20201228193121691.png

7.2 配置allure服务命令

安装好插件后,进入Manage Jenkins > Global Tool Configuration > Allure Commandline,点击新增Allure Commandline

image20201228193400095.png

默认选择了自动安装,这时如果保存,则会在之后的第一次构建中自动下载Allure服务程序,会比较慢。

image20201228193553370.png

如果系统上已经安装了allure服务,则可以指定安装目录,取消自动安装选项,在安装目录中填写系统allure服务的安装目录,注意不要配置到bin目录下,另外记得一定要填写别名:

image20201228195546702.png

然后保存。

7.3 项目中配置allure

进入项目配置页面,点击增加构建后操作步骤,选择Allure Report

image20201228194024903.png

注意allure的配置会添加到最前面,jenkins的构建后步骤是有顺序的,不是简单按照添加的顺序来的。

在Path中配置你的项目中pytest-allure生成的json文件的路径,注意配相对路径(相对工作空间)

image20201228194231770.png

然后保存,再次构建如果成功就可以看到在项目管理页面中多了Allure Report的选项

image20201228194504411.png

点击即可查看Allure报告。

如果出现打不开报告的情况,请检查构建日志和allure命令行,插件相关配置。

如果出现打开报告显示用例为0,请检查allure插件Path路径配置是否正确。

来源:testingpai

继续阅读