JMeter Ant Jenkins自动化集成

1. 安装Ant,下载地址https://ant.apache.org/bindownload.cgi,配置环境变量

ANT_HOME  D:\apache-ant-1.9.7

Path  %ANT_HOME%\bin  或者填写绝对路径(最好系统变量和用户变量的path都填写,不然会出现ant命令不是内部或外部命令的提示)

Classpath  %ANT_HOME%\lib  或者填写绝对路径

输入命令ant -version查看版本号

2. 配置ant的build.xml文件

    ant的安装目录的bin目录下是没有build.xml文件的,需要自己手动添加,具体代码如下。

    中文备注的地方需要自己注意下,有些需要自己改成自己的安装路径和自己需要的名称。

    我是新建了一个resultlog文件夹,直接把生成的html和jtl文件放在了jenkins的workspace目录下,运行的脚本我放在了jmeter的bin目录下。

    此处测试报告的名称我取的固定名称“TestReport”,有文章说这样每次都是最新的报告,我试了一下,其实不是的,每次生成的报告都会累积在同一个html文件内,观看不方便。解决方案写在文章最后。

<?xml version="1.0" encoding="UTF-8"?>
<project name="ant-jmeter-test" default="all" basedir=".">  
    <tstamp>  
        <format property="time" pattern="yyyyMMddhhmm" />  
    </tstamp>  
    <!-- 需要改成自己本地的 Jmeter 目录-->  
    <property name="jmeter.home" value="D:\apache-jmeter-5.1.1" />  
    <!-- jmeter生成jtl格式的结果报告的路径-->  
    <property name="jmeter.result.jtl.dir" value="D:\Jenkins\workspace\测试

\resultlog\jtl" />  
    <!-- jmeter生成html格式的结果报告的路径-->  
    <property name="jmeter.result.html.dir" value="D:\Jenkins\workspace\测试

\resultlog\html" />  
    <!-- 生成的报告的前缀-->  
    <property name="ReportName" value="TestReport" />  
    <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/

${ReportName}.jtl" />  
    <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/

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

value="${jmeter.result.jtl.dir}/${ReportName}.jtl" />  
    <property name="jmeter.result.htmlNamedetail" 

value="${jmeter.result.html.dir}/${ReportName}${detail}.html" />  
      
    <target name="all">  
        <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="D:\apache-jmeter-5.1.1\bin\Test" includes="*.jmx" />  
            
            <property name="jmeter.save.saveservice.output_format" value="xml"/>
            
        </jmeter>  
    </target>  
    
    <target name="report">  
        <xslt in="${jmeter.result.jtlName}"  
              out="${jmeter.result.htmlName}"  
              style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl" 

/>  
        <xslt in="${jmeter.result.jtlNamedetail}"  
              out="${jmeter.result.htmlNamedetail}"  
              style="${jmeter.home}/extras/jmeter.results.shanhe.me.xsl" /> 
        
<!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 

-->  
        <copy todir="${jmeter.result.html.dir}">  
            <fileset dir="${jmeter.home}/extras">  
                <include name="collapse.png" />  
                <include name="expand.png" />  
            </fileset>  
        </copy>  
    </target>  
</project>

       控制台进入ant安装目录的bin目录下,输入命令ant,运行结束出现sucess字眼就配置成功了。去到自己建的resultlog文件夹中可以看到生成的html和jtl文件。

3. 报告优化

    我这里放了两个测试报告模板,因为自带的21版本太过简洁,另一个版本的模板可百度下载,放在jmeter的extras文件夹下面,有很多资源。

 

   进入jmeter的的bin目录下找到jmeter.properties文件,取消如下代码的注释,并且把状态改为true。

    再次在控制台输入ant,resultlog里面的html文件会有两个。如下两张图。

4. 安装jenkins,下载地址https://jenkins.io/download/,进入到8080,如果端口被占用,进入jenkins安装目录找到jenkins.xml文件修改httpPort=8080的端口号即可。

5. 与jenkins集成

    在Manage Jenkins中找到插件管理,安装HTML Publisher Plugin,这样在新建项目时,在构建后操作中可以增加构建后操作步骤Publish HTML reports

   这样运行项目之后就会有HTML reports。

 

    这时候报告会不显示CSS格式,解决方案:安装Groovy Plugin,在新建项目时,在构建中,新增构建步骤Execute system Groovy script,写入脚本System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "sandbox; style-src 'self';")。

5. Jenkins配置自动发送邮件

    开通邮箱的SMTP服务,一般在邮箱的设置里面,我开通的163,这时会有一个授权码(要记住,登录第三方邮箱都需要)。

    安装Email Extension Plugin插件,进入系统管理--系统设置。

    

 

 

6.构建项目

新建一个自由风格的项目,在构建中,新建构建步骤Invoke Ant,点击高级,Build File中填入之前写的build.xml文件的绝对路径。

    增加构建后步骤Editable Email Notification。

    点击Addvanced Settings,这边改一下收件人,不然会收不到邮件。

邮件模板

<!DOCTYPE html>    
<html>    
<head>    
<meta charset="UTF-8">    
<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>    
</head>    
    <body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"    
    offset="0">    
    <table width="95%" cellpadding="0" cellspacing="0"  style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">    
        <tr>    
            本邮件由系统自动发出,无需回复!<br/>            
            各位同事,大家好,以下为${PROJECT_NAME }项目构建信息</br> 
            <td><font color="#CC0000">构建结果 - ${BUILD_STATUS}</font></td>   
        </tr>    
        <tr>    
            <td><br />    
            <b><font color="#0B610B">构建信息</font></b>    
            <hr size="2" width="100%" align="center" /></td>    
        </tr>    
        <tr>    
            <td>    
                <ul>    
                    <li>项目名称 : ${PROJECT_NAME}</li>    
                    <li>构建编号 : 第${BUILD_NUMBER}次构建</li>    
                    <li>触发原因: ${CAUSE}</li>    
                    <li>构建状态: ${BUILD_STATUS}</li>    
                    <li>构建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>    
                    <li>构建  Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li>    
                    <li>工作目录 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>    
                    <li>项目  Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li>    
                </ul>    

<h4><font color="#0B610B">失败用例</font></h4>
<hr size="2" width="100%" />
$FAILED_TESTS<br/>

<h4><font color="#0B610B">最近提交(#$SVN_REVISION)</font></h4>
<hr size="2" width="100%" />
<ul>
${CHANGES_SINCE_LAST_SUCCESS, reverse=true, format="%c", changesFormat="<li>%d [%a] %m</li>"}
</ul>
详细提交: <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a><br/>

            </td>    
        </tr>    
    </table>    
</body>    
</html>

7. 解决邮件发送的附件每次都要保证是最新的html报告的问题

    上面说到每次resultlog文件夹内都会生成以时间戳命名的html和jtl文件,或者像我build.xml文件那样,每次运行的结果都会累积在TestReport.html中,邮件接收者就会收到每次运行的结果,看起来很不方便。基于此,想到一个解决方案:

     新建一个文本文档,文档内写入del D:\Jenkins\workspace\测试\resultlog\html\TestReport.html del D:\Jenkins\workspace\测试\resultlog\jtl\TestReport.jtl,这个意思就是删除每次生成的html和jtl文件。

    将文件的后缀改为.bat

    开始菜单--所有程序--附件--系统工具--任务计划程序,创建基本任务,设置为自己需要的参数,因为我的脚本是每周五跑一次,所以每周六删除生成的html和jtl文件即可,运行刚才的bat文件。这样每次生成的html文件就是只包含本次运行的结果。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值