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

Stella981
• 阅读 472

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

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

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

-- IDO老徐 2020.02.07

一、前言

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

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

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



二、Jenkins创建Job

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

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

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

创建项目

  • 设置源码管理

在源码管理下,选择Git

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

源码管理

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

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

Github仓库地址

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

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

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

添加Git账户

  • 构建操作

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

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

设置定时构建

设置构建步骤,如下:

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

构建步骤

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

执行构建命令

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



三、构建Job

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

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

立即构建

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

构建成功

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

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

查看控制台输出

复制上面的路径,然后到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]#

注:如果不知道上面路径啥意思的,先看看底部的基础普及文,再回来看 。
  
    

   
   
   
   
     
 
    
    
    
  
    

   
   
   

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



三、安装HTML报告插件

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

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

插件管理

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

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

安装插件

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

安装成功

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

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

设置构建后操作

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

设置显示报告

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



四、查看测试报告

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

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

HTML报告

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

查看报告

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

我解决的方法如下:

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

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

安装Groovy插件

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

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

Execute system Groovy script

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

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

正常显示的报告

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 ” 获取 。

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

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

End 。

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

IDO老徐

2020.02.07  深圳

上一篇

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

推荐文章

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

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

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

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

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

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

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

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

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
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
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Stella981 Stella981
3年前
HIVE 时间操作函数
日期函数UNIX时间戳转日期函数: from\_unixtime语法:   from\_unixtime(bigint unixtime\, string format\)返回值: string说明: 转化UNIX时间戳(从19700101 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式举例:hive   selec
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这