美文网首页
联合使用(ant+jmeter+jenkins)搭建自动化接口测

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

作者: 我打辅助_be1c | 来源:发表于2022-03-08 16:11 被阅读0次

    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

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

    相关文章

      网友评论

          本文标题:联合使用(ant+jmeter+jenkins)搭建自动化接口测

          本文链接:https://www.haomeiwen.com/subject/pbparrtx.html