zoukankan      html  css  js  c++  java
  • Jenkins+Ant+Jmeter 实现持续集成

    实现结果:

    1、Jenkins中能查看两份报告,一份带有具体参数和返回信息,一份展示通过率。报告名按时间展示

    2、解决jenkins中html报告展示样式问题

    3、定时构建

    参考文章:

    https://testerhome.com/topics/13389 

    https://www.cnblogs.com/wulixia/p/11011793.html

    build文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <project name="ant-jmeter-test" default="run" basedir=".">
        <tstamp> 
            <!-- 设置日期时间格式--> 
            <format property="datetime" pattern="yyyyMMddhhmm" />
        </tstamp>
        <!-- 需要改成自己本地的 Jmeter 目录-->
        <property name="jmeter.home" value="D:apache-jmeter-5.2.1" />
        <property name="report.title" value="jmeter接口自动化测试"/>
        <!-- jmeter生成jtl格式的结果报告的路径-->
        <property name="jmeter.result.jtl.dir" value="D:apache-jmeter-5.2.1
    eport" />
        <!-- jmeter生成html格式的结果报告的路径-->
        <property name="jmeter.result.html.dir" value="D:apache-jmeter-5.2.1
    eport" />
        <!-- 生成的报告的前缀-->
        <property name="ReportName" value="TestReport" />
        <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${datetime}.jtl" />
        <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${datetime}.html" />
    
        <target name="run">
            <antcall target="test" />
            <antcall target="report" />
        </target>
    
        <target name="test">
            <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
            <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
                <!-- 声明要运行的脚本"*.jmx"指包含此目录下的所有jmeter脚本-->
                <testplans dir="C:UserszhujiachunDesktopjmeter自动化脚本-线上环境" includes="*.jmx" />
    
                <property name="jmeter.save.saveservice.output_format" value="xml"/>
            </jmeter>
        </target>
    
        <path id="xslt.classpath">
            <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
            <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
        </path>
    
    
        <target name="report">
            <tstamp> <format property="report.datestamp" pattern="yyyy/MM/dd HH:mm" /></tstamp>
            <!-- style="${jmeter.home}/extras/jmeter.results.shanhe.me.xsl" 报告模板取jemter的extra目录下的模板文件! -->
            <xslt
                  classpathref="xslt.classpath"
                  force="true"
                  in="${jmeter.result.jtlName}"
                  out="${jmeter.result.htmlName}"
                  style="${jmeter.home}/extras/jmeter.results.shanhe.me.xsl">
                  <param name="dateReport" expression="${report.datestamp}"/>
           </xslt>
    
                    <!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 -->
            <copy todir="${jmeter.result.html.dir}">
                <fileset dir="${jmeter.home}/extras">
                    <include name="collapse.png" />
                    <include name="expand.png" />
                </fileset>
            </copy>
        </target>
    
    </project>

    在jmeter的测试报告中显示responseData等信息

    在jmeter.properties文件中修改相应的参数

    https://www.cnblogs.com/cty136/p/11392929.html

    执行过程中遇到的问题:

    1、时间变量

    参考:https://www.cnblogs.com/chuiyuedefeng/p/11925381.html

    一开始文件名字中没有加上时间,导致生成的html文件一直都是同一个文件。每次执行之后测试结果数据就会在文件中进行累加。

    如果要每次执行都生成一个单独的文件,则需要在文件名配置中加上时间变量。

     加上时间变量后,可能会遇到jenkins中html报告路径不对,看不了测试报告的问题(原因是build文件中把文件名加上时间参数化了,但是jenkins打开的html路径识别不了参数化的datetime变量)

    解决方法是,在jenkins中下载date参数化插件

     在项目管理配置中加入参数化的时间变量

     

     

    2.执行多个目录的jmx脚本

    参考:https://testerhome.com/topics/13389

    <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
        <!-- 声明要运行的脚本"*.jmx"指包含此目录下的所有jmeter脚本-->
        <testplans dir="E:jmeterscript_smoke" includes="*.jmx" />
    
        <property name="jmeter.save.saveservice.output_format" value="xml"/>
    </jmeter>

    改成 <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}"> <!-- 声明要运行的脚本"*.jmx"指包含此目录下的所有jmeter脚本--> <testplans dir="E:jmeterscript_smoke" includes="*.jmx" /> <testplans dir="E:jmeterscript_smoke_two" includes="*.jmx" /> <property name="jmeter.save.saveservice.output_format" value="xml"/> </jmeter>

    3.生成多个html报告

    参考:https://testerhome.com/topics/13389

    我这里是生成两个,一个简单的汇总报告,一个详细的报告(用于定位接口报错)
    build_smoke_report.xml文件只利用jmeter-results-detail-report_21.xsl生成了一个html报告,想利用jmeter-results-shanhe-me.xsl生成第二个
    添加属性值

    <property name="detail" value="_detail" />
    <property name="jmeter.result.jtlNamedetail" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />
    <property name="jmeter.result.htmlNamedetail" value="${jmeter.result.html.dir}/${ReportName}${time}${detail}.html" />

    并且将 <target name="report"> <tstamp> <format property="report.datestamp" pattern="yyyy/MM/dd HH:mm" /></tstamp> <xslt classpathref="xslt.classpath" force="true" in="${jmeter.result.jtlNamedetail}" out="${jmeter.result.htmlNamedetail}" style="${jmeter.home}/extras/jmeter-results-shanhe-me.xsl"> <param name="dateReport" expression="${report.datestamp}"/> </xslt>

    改为 <target name="report"> <tstamp> <format property="report.datestamp" pattern="yyyy/MM/dd HH:mm" /></tstamp> <xslt classpathref="xslt.classpath" force="true" in="${jmeter.result.jtlName}" out="${jmeter.result.htmlName}" style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl"> <param name="dateReport" expression="${report.datestamp}"/> </xslt> <xslt classpathref="xslt.classpath" force="true" in="${jmeter.result.jtlNamedetail}" out="${jmeter.result.htmlNamedetail}" style="${jmeter.home}/extras/jmeter-results-shanhe-me.xsl"> <param name="dateReport" expression="${report.datestamp}"/> </xslt>

    多个报告可以用*.html表示

     

    解决 Jenkins 中无法展示 HTML 样式的问题

    https://www.cnblogs.com/erchun/p/13453086.html

    在build.xml所在目录打开命令窗口(鼠标在空白处按下shift键后在右键),

    或者命令行cd到build.xml文件所在目录,输入ant run回车,执行测试

    4.6查看测试报告

  • 相关阅读:
    2、容器初探
    3、二叉树:先序,中序,后序循环遍历详解
    Hebbian Learning Rule
    论文笔记 Weakly-Supervised Spatial Context Networks
    在Caffe添加Python layer详细步骤
    论文笔记 Learning to Compare Image Patches via Convolutional Neural Networks
    Deconvolution 反卷积理解
    论文笔记 Feature Pyramid Networks for Object Detection
    Caffe2 初识
    论文笔记 Densely Connected Convolutional Networks
  • 原文地址:https://www.cnblogs.com/erchun/p/13446446.html
Copyright © 2011-2022 走看看