在用Python做自动化测试时,我们写好代码,然后需要执行才能得到测试报告,这时我们可以通过 Jenkins 来进一步完成自动化工作 。借助Jenkins,我们可以结合 Git/SVN 自动拉取代码,通过设置定时构建实现自动触发脚本执行,得到测试报告,最后还可以配置发送邮件等 。今天我们就来分享下,如何结合 Git自动拉取代码,通过构建来自动执行python脚本输出测试报告 。
Jenkins是开源的,使用JAVA编写的持续集成工具 。需要安装JDK,如果已经安装了JDK可以跳过该步骤 。
1. 安装JDK官网下载 JDK

文章插图
将下载好的压缩包放在linux上

文章插图
然后解压Java到相应目录:
输入命令:tar -zxvf jdk-11.0.8_linux-x64_bin.tar.gz /home/java
如果提示没有tar命令,输入yum install -y tar,先安装tar

文章插图
编辑环境变量,在/etc/profile文件中添加环境变量:
输入命令:vim /etc/profile
在文件最后添加内容如下,然后保存:
JAVA_HOME=/home/java/jdk-11.0.8JRE_HOME=$JAVA_HOME/jrePATH=$PATH:$JAVA_HOME/binCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport JAVA_HOMEexport JRE_HOMEexport PATHexport CLASSPATH
文章插图
输入命令source /etc/profile,刷新环境变量配置文件使其立刻生效
到此,JDK已经安装完成 。输入java -version查看是否安装成功,出现如下图即安装成功 。

文章插图
PS:建议建一个Java的超链接 。建立之后默认情况下从/usr/bin/java路径使用Java,yum安装的时候,这个链接会自动创建 。
输入命令ln -s /home/java/jdk-11.0.8/bin/java /usr/bin/java
2. 安装Jenkins官网:https://www.jenkins.io/download/
选择对应的操作系统或者使用yum方式安装,这里我使用的是yum,因为比较方便:

文章插图
yum的repos中默认是没有Jenkins的,所以我们需要先将Jenkins存储库添加到yum repos中 。
点击官网中【centos/Fedora/Red Hat】系统,然后将命令复制粘贴到Linux系统中 。

文章插图
之后就可以看到系统开始自动下载安装 。若出现提示是否下载输入:y并按回车 。耐心等待安装完成 。

文章插图
启动Jenkins,命令:service jenkins start,出现ok表示Jenkins启动成功 。

文章插图
在浏览器输入ip:8080进入Jenkins登录页面,输入密码 。至此,Jenkins安装完成 。
3. Job配置新建一个自由风格的项目
进入工程配置页面,在源码管理下,选择Git:

文章插图

文章插图
如果源码管理中没有Git,说明你没有安装Git插件 。点击【Manage Jenkins】,选择【Manage Plugins】,选择【可选插件】,在【搜索框】中输入git plugin,下载该插件 。
安装成功如图所示,然后重启【Jenkins】:

文章插图
构建执行shell,根据自己的脚本输入pytest命令 。也就是说Jenkins将Git仓库代码下载之后,我们要怎么通过命令去执行脚本,这个根据自己执行脚本的情况填写即可,这里和我们手工执行脚本的操作是一致的,然后点击保存 。

文章插图
点击【Build Now[立即构建]】,可以看到正在执行的构建Job

文章插图
4. 测试报告当用例执行完成之后,我们想看用例执行的情况,而pytest不仅支持pytest-html插件,还可以使用allure生成更加美观的测试报告 。Allure框架是一个灵活的轻量级多语言测试报告工具,它不仅以web的方式展示了简介的测试结果,而且允许参与开发过程的每个人从日常执行的测试中最大限度的提取有用信息 。所以我们这里选择的是Allure框架 。
推荐阅读
- 微服务如何限制接口调用次数?
- 一通百通,一文实现灵活的 K8S 基础架构
- 高德地图AR驾车导航新升级 实现全面机型覆盖
- Python网络编程实现自动化,简化Telnet网络配置工作
- SpringBoot接口频繁超时,长时间找不到原因,我用 Arthas 定位到了
- IP代理技术是如何实现IP地址的切换与隐藏?
- Python实现钉钉/企业微信自动打卡
- 还不知道ReentrantLock的实现流程,那你就out了
- 一文看懂 HashMap 中的红黑树实现原理
- 什么是接口幂等性?为什么会产生这个问题?如何保证接口幂等性?
