一步一步教您如何搭建ant+jenkins+jmeter自动化接口测试框架(持续集成篇)

   日期:2020-05-01     浏览:102    评论:0    
核心提示:引言为什么要持续集成?1、减少风险2、减少假定3、减少重复过程4、增强项目的可见性5、持续集成可以带java

引言

为什么要持续集成?

1、减少风险

2、减少假定

3、减少重复过程

4、增强项目的可见性

5、持续集成可以带来两点积极效果:

(1)有效决策:持续集成系统为项目构建状态和品质指标提供了及时的信息,有些持续集成系统可以报告功能完成度和缺陷率。

(2)注意到趋势:由于经常集成,我们可以看到一些趋势,如构建成功或失败、总体品质以及其它的项目信息。

一、配置jmeter、Ant、jenkins环境

下载Jmeter工具:

Jmeter官网

<1> 下载jdk:
链接: https://pan.baidu.com/s/1yJX_2P5Y115bJqQKqkpQCg 提取码: 1ps4

<2>配置环境变量:
新建JMETER_HOME: 值为安装jmeter的根目录

新建JAVA_HOME: 值为JDK安装目录

新建CLASSPATH: 值为
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%JMETER_HOME\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar

在PATH里添加三行:
1)、jdk的安装目录到bin(注意,安装jdk后,会默认写上一个jdk路径,如果和本机安装不对应,需要手动更改)
2)、;%JAVA_HOME%\bin;
3)、%JMETER_HOME%\bin


<3>验证配置好的jdk环境
打开cmd,输入java -version/javac/java


<4>验证jmeter

打开cmd,输入jmeter


弹出jmeter工具既表示配置环境成功

<5> 下载ant工具

方式一:
ant官网下载地址

方式二 百度网盘获取下载:
链接:https://pan.baidu.com/s/1QitunpZiJB9NA-F18TXxeQ
提取码:d7fn

下载好后安装

<6> 配置ant环境变量

新建ANT_HOME,值为安装ant的绝对路径

在PATH中加入安装ant 的绝对路径到bin

在CLASSPATH中加入安装ant的绝对路径到lib,记得用半角;号隔开


<7> 验证ant环境
打开cmd,输入:ant -version,出现ant版本既配置成功

<8> 下载jenkins并安装

Jenkins官网:
https://jenkins.io/

Jenkins(百度网盘):
链接地址:https://pan.baidu.com/s/1hWC5vmglb9WNYFTQIlnDcw
提取码: apeg

之后按照提示安装就行,出现选择插件安装方式,一种为默认的一种为手动,这里我们选择默认


安装好以后,如果有失败的插件,不要紧,因为很正常,我们点击继续就行

会出现配置jenkins的url,这里默认就行(默认的话端口号是8080)

创建用户(账号、密码)、点击开始,按提示走就可以

<9>验证jenkins安装完毕

打开任意一个浏览器,输入localhost:8080(就是一开始的默认jenkins端口号 )

到此,ant、jmeter、jenkins全部安装好并配完相关环境

二、联合使用(ant+jmeter+jenkins)搭建自动化接口测试框架

1、先编写好一个jmeter的脚本,并在jmeter上跑通

这里我就用了一个登录接口,做示例


通过后导入,并保存为.jmx文件



2、在桌面创建好一个空的文件夹,用于ant执行,并在内部创建好三类文件夹(result、scrpit、html)


result = 存放执行后的jmx文件结果
html = 存放将jmx执行结果进行转换为html格式文件
scrpit = 存放jmx脚本

在这里我们把刚才跑通的jmx文件放到scrpit中

3、准备一个build.xml脚本,并把他放到我们刚才创建的文件夹的根目录

需要注意的是,build文件名不可被修改,只允许叫build.xml

<?xml version="1.0" encoding="GBK"?>

<project name="ant-jmeter-test" default="run" basedir=".">
    <tstamp>
        <format property="time" pattern="yyyyMMddhhmm" />
    </tstamp>
  
    <target name="run">
    	   <antcall target="clear1" />
	<antcall target="test1" />
      	  <antcall target="report1" />
	<antcall target="sendmail1" />
    </target>
	
    <target name="test1">
		  <echo message="开始执行jmeter脚本..."></echo>
        <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
        <jmeter jmeterhome="jmeter家目录" resultlog="jtl路径\1.jtl">
             <!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本-->
            <testplans dir="脚本路径" includes="脚本名称" />
		<property name="jmeter.save.saveservice.output_format" value="xml"/>
        </jmeter>
    </target>
         <path id="xslt.classpath">
         <fileset dir="jmeter中lib路径" includes="xalan*.jar"/>
         <fileset dir="jmeter中lib路径" includes="serializer*.jar"/>
    </path>
	
    <target name="report1">
	<echo message="开始转换执行结果..."></echo>
	<tstamp> <format property="time" pattern="yyyy/MM/dd HH:mm" /></tstamp>
        <xslt classpathref="xslt.classpath"
              force="true"
	 in="jtl路径\1.jtl"
              out="html路径\1.html"
              style="jmeter中exaters的路径+jmeter-results-detail-report_21的名称">
				<param name="titleReport" expression="xxxxx"/> 
				<param name="dateReport" expression="${time}"/>  
       </xslt>  
   	             <!-- jmeter-results-detail-report_21  因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝--> 
           <copy todir="html的路径">
            <fileset dir="jmeter中exaters的路径">
                <include name="collapse.png" />
                <include name="expand.png" />
            </fileset>
        </copy>			
    </target>

		<target name="clear1">
	<!-- 每次执行前先删除清空jtl和html文件夹,释放空间 -->
		<echo message="释放空间,清空jtl和html文件夹中 ..."></echo>
		<delete dir="jtl的路径" />
		<delete dir="html的路径" />
		<!-- 删除单个文件-- >
		<delete file="jtl的路径\1.jtl" />
		<sleep seconds="2"/>  
		<echo message="释放完成 ..."></echo>
	</target>


	<target name="sendmail1">
	<!--把报告进行压缩打包-->
	<jar jarfile="report的路径.rar" basedir="html的路径"/>
	<!--把文件贴到邮件正文-->
	<loadfile property="html" srcFile="html的路径\1.html" encoding="UTF-8">
	<filterchain>
			<expandproperties />
		</filterchain>
	</loadfile>
	
	<mail mailhost="smtp.126.com" 
	mailport="25" subject="邮件标题" 
	messagemimetype="text/html" tolist="norma_bai@163.com"
	user="norma_bai@163.com" password="bj900420">
	<from address="norma_bai@163.com"/>
	<!--发送附件-->
	<fileset dir="在jmeter中创建的文件夹">
   		 <include name="report.rar"/>
  	 </fileset>
	<message><![CDATA[ 
	<p>维度电影项目组收:</p>
	<pre> ${html} </pre>
	<p>自定义邮件内文字</p>
	]]></message>
	</mail>
	</target>
</project>

对这个build内容进行填充

<?xml version="1.0" encoding="GBK"?>

<project name="ant-jmeter-test" default="run" basedir=".">
    <tstamp>
        <format property="time" pattern="yyyyMMddhhmm" />
    </tstamp>
  
    <target name="run">
    	   <antcall target="clear1" />
	<antcall target="test1" />
      	  <antcall target="report1" />
	<antcall target="sendmail1" />
    </target>
	
    <target name="test1">
		  <echo message="开始执行jmeter脚本..."></echo>
        <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
        <jmeter jmeterhome="E:\学习相关\apache-jmeter-5.2.1" resultlog="C:\Users\Administrator\Desktop\自动化接口测试框架\result\1.jtl">
             <!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本-->
            <testplans dir="C:\Users\Administrator\Desktop\自动化接口测试框架\script" includes="*.jmx" />
		<property name="jmeter.save.saveservice.output_format" value="xml"/>
        </jmeter>
    </target>
		
         <path id="xslt.classpath">
        <fileset dir="E:\学习相关\apache-jmeter-5.2.1\lib" includes="xalan*.jar"/>
        <fileset dir="E:\学习相关\apache-jmeter-5.2.1\lib" includes="serializer*.jar"/>
    </path>
	
    <target name="report1">
	<echo message="开始转换执行结果..."></echo>
	<tstamp> <format property="time" pattern="yyyy/MM/dd HH:mm" /></tstamp>
        <xslt classpathref="xslt.classpath"
              force="true"
	 in="C:\Users\Administrator\Desktop\自动化接口测试框架\result\1.jtl"
              out="C:\Users\Administrator\Desktop\自动化接口测试框架\html\1.html"
              style="E:\学习相关\apache-jmeter-5.2.1\extras\jmeter-results-detail-report_21.xsl">
				<param name="titleReport" expression="登录测试报告"/> 
				<param name="dateReport" expression="${time}"/>  
       </xslt>  
   	             <!-- jmeter-results-detail-report_21  因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝--> 
        <copy todir="C:\Users\Administrator\Desktop\自动化接口测试框架\html">
            <fileset dir="E:\学习相关\apache-jmeter-5.2.1\extras">
                <include name="collapse.png" />
                <include name="expand.png" />
            </fileset>
        </copy>			
    </target>

		<target name="clear1">
	<!-- 每次执行前先删除清空jtl和html文件夹,释放空间 -->
		<echo message="释放空间,清空jtl和html文件夹中 ..."></echo>
		<delete dir="C:\Users\Administrator\Desktop\自动化接口测试框架\result" />
		<delete dir="C:\Users\Administrator\Desktop\自动化接口测试框架\html" />
		<!-- 删除单个文件-->
		<delete file="C:\Users\Administrator\Desktop\自动化接口测试框架\1.rar" />
		<sleep seconds="2"/>  
		<echo message="释放完成 ..."></echo>
	</target>


	<target name="sendmail1">
	<!--把报告进行压缩打包-->
	<jar jarfile="C:\Users\Administrator\Desktop\自动化接口测试框架\1.rar" basedir="C:\Users\Administrator\Desktop\自动化接口测试框架\html"/>
	<!--把文件贴到邮件正文-->
	<loadfile property="html" srcFile="C:\Users\Administrator\Desktop\自动化接口测试框架\html\1.html" encoding="UTF-8">
	<filterchain>
			<expandproperties />
		</filterchain>
	</loadfile>
	
	<mail mailhost="smtp.qq.com" 
	mailport="25" subject="登录接口测试结果" 
	messagemimetype="text/html" tolist="2633547951@qq.com"
	user="2633547951@qq.com" password="qq邮箱授权码">
	<from address="2633547951@qq.com"/>
	<!--发送附件-->
	<fileset dir="C:\Users\Administrator\Desktop\自动化接口测试框架">
   		 <include name="1.rar"/>
  	 </fileset>
	<message><![CDATA[ 
	<p>维度电影项目组收:</p>
	<pre> ${html} </pre>
	<p>自定义邮件内文字</p>
	]]></message>
	</mail>
	</target>
</project>

我们来跑一下这个build,看能否跑通

打开cmd

cd到我们项目的文件夹中

然后输入:ant

接下来就开始执行,但是后来发现到了sendmail方法就止住不动了,并报错:


经过我网上搜索答案,发现在安装ant的目录下的lib中缺少jar包(activation.jar、commons-lang3-3.8.1.jar、mail.jar),后来又去下载,前前后后浪费了大量的时间,这里把百度链接发给大家,如果出现这类错误,直接下载然后丢到ant目录中的lib目录就可以
链接: https://pan.baidu.com/s/18BWUMrW7ABfBlvU_b3Mppw 提取码: 8jk4

继续执行文件

发现这次成功了,而且邮箱也收到了报告


正文是这样的:


并且带有附件(把html报告的目录压缩):

那么我们就可以进入jenkins构建中了(其实每次不一定非要跑通,只要我们第一次ant成功了,那么后续只需要更改jmx文件就行或者不需要更改,在原先的jmx上重命名替换也是可以的)

build文件下载地址(百度网盘):

链接: https://pan.baidu.com/s/1oW047bCE7DB7wDdDWPp8Lg 提取码: smev

4、jenkins构建任务

打开任意一个浏览器,输入:localhost:8080,进入jenkins中


突然发现jenkins也启动不了了? 赶忙又去找解决办法,

1)打开Windows的cmd命令窗口,将路径切换到Jenkins安装目录文件下

2)在cmd窗口输入java -jar jenkins.war --httpPort=9000

3)打开浏览器,输入http://localhost:9000/,进入Jenkins界面

转载博客:https://blog.csdn.net/you23hai45/article/details/79644176

弄好了以后再次打开


这次成功进去了,下面开始在jenkins中配置Ant

点击系统管理,进入后,下拉,找到全局工具配置


进入后,新增ant,添加ant安装路径并应用、保存

如果没有Ant怎么办? 说明你没有安装相关插件,要去官网下载
官网链接:https://updates.jenkins-ci.org/download/plugins/
打开后,在搜索框中输入你要下载的插件名就可以

配置好ant后,点击新建任务,创建一个新项目


勾选构建中的定时建构,可以按照规定的时间有规律性的建构,勾选后面的?号可以查看构建的命令规格

勾选建立中的调用蚂蚁(注意,我用的是谷歌翻译后的,大家可以按照对应的位置去选择)

点击高级


填写我们上述创建的文件夹路径(也就是需要持续集成的jmx文件),后面跟上build.xml

然后应用、保存

最后构建下


可以看到,本次构建成功了

最后看下控制台输出:


这样下来,自动化接口测试框架就已经搭建好了,可以开展持续集成的工作

有问题博客下方留言

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
更多>相关资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服