Jenkins自动执行Python脚本,并输出测试报告

这段时间,在家时间自由(除了睡觉8小时,其他时间都在工作和学习),有大把的时间实操练习一些硬技能

今天,更新一篇利用Jenkins这套框架,调用Python自动化脚本,并输出测试报告的手把手实操文章;

步骤非常详细,且整篇文章非常完整;有每一步的操作截图,每位同学都可以跟着实操(建议多操作几遍);

-- IDO老徐 2020.02.07

一、前言

在用python做自动化测试时,我们写好代码,然后需要执行才能得到测试报告,这时我们可以通过 Jenkins来进一步完成自动化工作。

借助Jenkins,我们可以结合 Git/SVN 自动拉取代码,可以设置定时构建,接着就可以定时触发执行脚本,得到并查看测试报告,最后还可以配置发送邮件等。

今天我们就来学习下,如何结合 Git/SVN 自动拉取代码,通过构建来自动执行python脚本输出测试报告。



二、Jenkins创建Job

  • 新建一个自由风格的项目

登录Jenkins后,选择新建任务,新建一个自由风格的项目。

创建项目

  • 设置源码管理

在源码管理下,选择Git

源码管理

Repository URL指代码仓库地址,复制Github仓库的地址填入即可(或者填写公司自主搭建的Git仓库地址url ;)。

Github仓库地址

**注意:**如果是SSH方式链接的,点右上角的SSH地址,使用SSH方式的话需要设置SSH Key。

如果选择的时候没有显示Git账户,则需要添加一个,在添加界面填上自己Git仓库登录的账号和密码,如下:

添加Git账户

  • 构建操作

接着,我们可以设置构建触发器,构建步骤等操作。定时构建语法,这里不多介绍,大家可以去网上查找学习。

设置定时构建

设置构建步骤,如下:

构建步骤

执行构建命令

在这里,需要输入执行命令,也就是说Jenkins将Git仓库代码下载之后,我们要怎么通过命令去执行脚本,这个根据自己执行脚本的情况填写即可,这里和我们手工执行脚本的操作是一致的。



三、构建Job

上面设置完成之后,保存即可。回到工作台,进入任务模块点击立即构建,我们测试一下构建执行脚本是否正常。

立即构建

构建成功

如上,如果构建显示为蓝色,则表示构建成功,构建之后可以点击构建的任务图标,查看具体的构建日志,控制台输出等相关信息。

查看控制台输出

复制上面的路径,然后到Linux下查看一下。

[root@wintest test_demo]# cd /root/.jenkins/workspace/test_demo``[root@wintest test_demo]# ls``api common config data log README.md report run_all.py testcases``[root@wintest test_demo]#

1注:如果不知道上面路径啥意思的,先看看底部的基础普及文,再回来看 。 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

到这里,我们已经通过Jenkins结合Git自动拉取代码,通过构建来自动执行python脚本。



三、安装HTML报告插件

上面我们已经通过构建执行python脚本,得到测试报告,但不能在Jenkins界面上直接查看报告。对此,我们可以安装一个插件来达到这个目的。

插件管理

进入插件管理界面,选择可选插件,然后搜索插件:HTML Publisher,直接安装即可。

安装插件

安装成功

安装完成之后,返回工作台。找到创建的Job,重新设置 构建后操作步骤,选择 Publish HTML reports

设置构建后操作

设置显示报告

**注意:**在这里,我们通过执行python脚本生成的测试报告,如果包含详细时间的(比如这样 TestReport_20200112151736.html),可能不太好弄,因此我这里设置生成的测试报告是固定的名称,这样就方便多了。



四、查看测试报告

配置完成后,构建成功就可以看到测试报告了。

HTML报告

查看报告

点击查看报告后,发现报告和我们手动在浏览器打开的不一样,这是因丢失了css样式导致的,解决这个问题的方法有多种 。

我解决的方法如下:

首先,安装 Groovy插件,重启Jenkins。

安装Groovy插件

接着修改一下项目的配置,增加构建步骤:Execute system Groovy script,输入内容:System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", ""),最后保存。

Execute system Groovy script

上面设置完成,返回工作台,需要重新构建项目才生效,构建后再次查看报告,可以看到显示正常了。

正常显示的报告

OK,到这里我们已成功实现Jenkins自动执行python脚本,输出并可直接在界面上查看测试报告。

End

如上,搞定 。

如果实操一次搞不定,对着多操作几遍;

此文作者:wintests ,百人计划4期成员 ;
作者授权发布 。

/

IDO老徐,补充:

如果想自己练习、学习,没有git仓库的;之前老徐搭建了一个git服务,随便玩

http://istester.com/page/git.html

这篇文章实操过程中,如果不知道如何入手,也许是缺基础知识,建议先看如下几篇入门文章:

1)如果电脑上没安装Jenkins,看下文:

Jdk Jenkins Git / 安装部署 。

持续集成之Jenkins知识普及~持续集成之Jenkins _ 老徐先带你入个门2)如果Linux命令看不懂,看下文:

21天,搞定软件测试从业者必备的Linux命令(完整篇)

3)如果Git命令看不懂,看下文:

测试工程师日常必备Git命令行操作:新建分支,修改,提交代码,手把手入门基础。

测试从业者 必备 之 Git入门到实战系列

Git / 版本 / 分支 / 提测 ,一些常识&流程梳理。

这几篇相关文章看完后,再重新实操这篇文章的:通过Jenkins执行Python脚本生成测试报告;

/

今天想聊的,就这些 。

技术人,别只关注技术本身,技术只是解决问题的手段 ;

软技能、硬技能、测试基础,齐头并进,一个都不能少 。

如果能看到这篇文章,恭喜你,老徐此公号「简尚」,就是带你全方位,去提升综合能力的 。

未完待续 。

之前有一些2019测试行业数据报告,如有兴趣,公号后台,对话框回复“ 0106 ” 获取 。

扫码关注,回复“ 0106 ” 获取

End 。

有想讨论的,底部留言,交流 。

IDO老徐

2020.02.07  深圳

上一篇

在家远程办公,考验「软件测试人的知识甄别能力」

推荐文章

找了三个月,没找到工作 。

40岁了,还在投递普通岗位

“ 优秀的业务测试工程师 ” 应该是这样的 。

给35+的软件测试从业者一些建议,该焦虑了

希望老徐的每篇文章都对你有那么点价值 。

如有用,广而告之(欢迎文章转发,禁止未经允许抄袭COPY文章内容到其他平台) 。

>如果此文实操3遍以上还没成功的,可能是你的基础技能太薄弱,甚至完全没接触,可以看看原文的视频(虽然老徐不提倡视频学习、太慢)

本文分享自微信公众号 - 简尚(idoxu2016)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )