关闭

Ant批量处理Jmeter脚本

发表于:2017-3-21 11:06

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Ryana    来源:51Testing软件测试网采编

  Ant是一个可以把代码从某个地方拿来,编译,再拷贝到某个地方去的构建工具。一时冲动学习一下,顺便王婆卖瓜尝试着处理jmeter的脚本,于是,采坑之旅也从此开始。本文省略ant安装步骤和ant脚本说明,直接写遇到的问题以及解决的方法。
  首先,谷歌"ant批量处理jmeter脚本",以贺满博客为主(其实写得都差不多)
<?xml version="1.0" encoding="UTF-8"?>
<project name="ant-jmeter-test" default="all" basedir=".">
<!--为生成的jtl和html文件加时间戳-->
<tstamp>
<format property="time" pattern="yyyyMMddhhmm" />
</tstamp>
<!--更改为自己的jmeter路径-->
<property name="jmeter.home" value="D:\apache-jmeter-3.0_slave" />
<!--更改为自己的jtl文件结果存放路径-->
<property name="jmeter.result.jtl.dir" value="D:\apache-jmeter-3.0_slave\apache-jmeter-3.0_slave" />
<!--更改为自己的html文件结果存放路径-->
<property name="jmeter.result.html.dir" value="D:\apache-jmeter-3.0_slave\apache-jmeter-3.0_slave" />
<!--生成的html报告的前缀-->
<property name="ReportName" value="TestReport" />
<!--jlt和html文件名称-->
<property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />
<property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.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文件所在路径-->
<testplans dir="D:\apache-jmeter-3.0_slave\apache-jmeter-3.0_slave\bin" includes="*.jmx" />
</jmeter>
</target>
<target name="report">
<!--使用jmeter自己的转化文件:将jtl转化为xsl文件,改为自己的xsl文件所在路径-->
<xslt in="${jmeter.result.jtlName}" out="${jmeter.result.htmlName}" style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl" />
<copy todir="${jmeter.result.html.dir}">
<fileset dir="${jmeter.home}/extras">
<include name="collapse.png" />
<include name="expand.png" />
</fileset>
</copy>
</target>
</project>
  初版大致如上,幸运指数100%的话,cmd进入ant目录,输入ant会直接生成如下图.html格式的测试报告
  不幸的话继续看:
  问题1:unexpected text “ ”
  解决办法:隐藏所有注释前面的空格
  问题2:jmeter-results-detail-report_21.xsl doesn’t exist
  解决办法:下载jmeter-results-detail-report_21源码,jmeter3.0没有这个文件,jmeter-results-detail-report_21和jmeter-results-detail-report是两个不同文件。将下载的源码格式从.xml改为.xsl,投机取巧直接改后缀就行,放在jmeter\extras文件下
  问题3:测试报告NaN
  解决办法:从jmeter的lib包里复制一份xalan-2.7.2.jar和serializer-2.7.2.jar 到Ant的lib包,并且在build.xml添加如下代码
<path id="xslt.classpath">
<fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
<fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
</path>
  问题4:测试报告没有标题信息,添加如下代码,可能遇到的type param is undefined
<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}"/>
<param name="titleReport" expression="${report.title}${report.datestamp}"/>
</xslt>
  解决方法:注意style标签结尾没有反斜杠
  最后,无比同情的恭喜你成功了
  build.xml完整如下:
<?xml version="1.0" encoding="UTF-8"?>
<project name="ant-jmeter-test" default="all" basedir=".">
<!--为生成的jtl和html文件加时间戳-->
<tstamp>
<format property="time" pattern="yyyyMMddhhmm"/>
</tstamp>
<!--更改为自己的jmeter路径-->
<property name="jmeter.home" value="D:\apache-jmeter-3.0_slave\apache-jmeter-3.0_slave"/>
<property name="report.title" value="XXXX接口测试"/>
<!--更改为自己的jtl文件结果存放路径-->
<property name="jmeter.result.jtl.dir" value="D:\apache-jmeter-3.0_slave\apache-jmeter-3.0_slave"/>
<!--更改为自己的html文件结果存放路径-->
<property name="jmeter.result.html.dir" value="D:\apache-jmeter-3.0_slave\apache-jmeter-3.0_slave"/>
<!--生成的html报告的前缀-->
<property name="ReportName" value="TestReport"/>
<!--jlt和html文件名称-->
<property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl"/>
<property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html"/>
<target name="all">
<antcall target="test"/>
<antcall target="report"/>
</target>
<path id="xslt.classpath">
<fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
<fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
</path>
<target name="test">
<taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/>
<jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
<!--改为自己的jmx文件所在路径-->
<testplans dir="D:\apache-jmeter-3.0_slave\apache-jmeter-3.0_slave\bin" includes="0222TestT.jmx"/>
</jmeter>
</target>
<target name="report">
<tstamp>
<format property="report.datestamp" pattern="yyyy/MM/dd HH:mm"/>
</tstamp>
<!--使用jmeter自己的转化文件:将jtl转化为xsl文件,改为自己的xsl文件所在路径-->
<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}"/>
<param name="titleReport" expression="${report.title}${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脚本的话,只需改成includes="*.jmx"
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号