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

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

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


image.png

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

image.png

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


image.png

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

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


image.png

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

image.png

需要注意的是,build文件名不可被修改,只允许叫build.xml
如果收到的邮件是乱码,encoding="GBK"改成encoding="UTF-8"
并且注意第一行代码前不要有空行或者空格,否则无法运行

<?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\ant\result\1.jtl">
             <!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本-->
            <testplans dir="C:\Users\Administrator\Desktop\ant\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\ant\result\1.jtl"
              out="C:\Users\Administrator\Desktop\ant\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\ant\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\ant\result" />
        <delete dir="C:\Users\Administrator\Desktop\ant\html" />
        <!-- 删除单个文件-->
        <delete file="C:\Users\Administrator\Desktop\ant\1.rar" />
        <sleep seconds="2"/>  
        <echo message="释放完成 ..."></echo>
    </target>
 
 
    <target name="sendmail1">
    <!--把报告进行压缩打包-->
    <jar jarfile="C:\Users\Administrator\Desktop\ant\1.rar" basedir="C:\Users\Administrator\Desktop\ant\html"/>
    <!--把文件贴到邮件正文-->
    <loadfile property="html" srcFile="C:\Users\Administrator\Desktop\ant\html\1.html" encoding="UTF-8">
    <filterchain>
            <expandproperties />
        </filterchain>
    </loadfile>
    
    <mail mailhost="smtp.qq.com" 
    mailport="25" subject="测试结果" 
    messagemimetype="text/html" tolist="1429622029@qq.com"
    user="1429622029@qq.com" password="邮箱授权码">
    <from address="1429622029@qq.com"/>
    <!--发送附件-->
    <fileset dir="C:\Users\Administrator\Desktop\ant">
         <include name="1.rar"/>
     </fileset>
    <message><![CDATA[ 
    <p>项目组收:</p>
    <pre> ${html} </pre>
    <p>自定义邮件内文字</p>
    ]]></message>
    </mail>
    </target>
</project>
 

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

打开cmd

cd到我们项目的文件夹中


image.png

然后输入:ant


image.png

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


image.png

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

image.png

image.png

继续执行文件


image.png

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


image.png

正文是这样的:


image.png

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


image.png

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

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

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

4、jenkins构建任务

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


image.png

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

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

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

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

弄好了以后再次打开

image.png

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


image.png

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

image.png

进入后,新增ant,添加ant安装路径并应用、保存,本地的jenkin,ANT_Home填写ant的安装路径,不要勾选自动安装


1646726283(1).png

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

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

image.png

image.png

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


image.png

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


image.png

点击高级


image.png

填写我们上述创建的文件夹路径(也就是需要持续集成的jmx文件),ant选择之前配置的版本,后面跟上build.xml


image.png

然后应用、保存


image.png

最后构建下


image.png

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

最后看下控制台输出:


image.png

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容