标签:目录 run ota processor display force ref 准备 实例
1.Ant下载(https://ant.apache.org/bindownload.cgi),解压缩,配置环境变量(不配也可以,配了更方便一些)。
我这里下载的是apache-ant-1.10.5-bin.zip,在运行时需要Java8。(JDK8下载安装)
Ant 环境变量配置:
计算机→属性→高级系统设置→高级→环境变量→系统变量;
新建“ANT_HOME”变量,变量值为:D:\software\apache-ant-1.10.5(根据ant的实际解压路径填写);
在path变量里添加变量值:%ANT_HOME%\bin;。
2.将JMeter所在目录下extras子目录里的ant-JMeter-1.1.1.jar复制到Ant所在目录lib子目录之下,这样Ant运行时才能找到"org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"这个类,从而成功触发JMeter脚本。
3.jmeter默认保存的是.csv格式的文件,所以我们先要设置一下bin/jmeter.properties文件内容,保存。
jmeter.save.saveservice.output_format=xml
否则会报错:com.sun.org.apache.xml.internal.utils.WrappedRuntimeException: 前言中不允许有内容。
4.提前准备一个测试脚本(手机号码归属地测试.jmx)并测试通过。
5.主要逻辑思路:运行D:\jemeterTest\script下面的.jmx脚本,生成.jtl文件放入 D:\jemeterTest\resultLog\jtl文件中,ant在将相应的文件转换为对应的html文件放入D:\jemeterTest\resultLog\html中。
build.xml文件中的内容如下:
<?xml version="1.0" encoding="utf-8"?> <project name="JmeterTest" default="all" basedir="."> <tstamp> <format property="time" pattern="yyyyMMddhhmm" /> </tstamp> <!-- 需要改成自己本地的 Jmeter 目录--> <property name="jmeter.home" value="D:\software\apache-jmeter-5.1" /> <!-- jmeter生成jtl格式的结果报告的路径--> <property name="jmeter.result.jtl.dir" value="D:\jmeterTest\resultLog\jtl" /> <!-- jmeter生成html格式的结果报告的路径--> <property name="jmeter.result.html.dir" value="D:\jmeterTest\resultLog\html" /> <!-- 生成的报告的前缀 --> <property name="ReportName" value="TestReport" /> <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" /> <!-- 接收测试报告的邮箱 --> <property name="mail_to" value="hello@163.com" /> <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:\jmeterTest\script" includes="*.jmx" /> </jmeter> </target> <target name="report"> <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>
6.测试前(创建相应目录并将脚本和构建文件放入其中):
7.命令行到build.xml所在的目录,ant,回车运行。
8.测试后:
浏览器打开HTML文件,显示正确(缺点是min time和max time没有值)
打开jtl文件
上面的步骤有点乱,感觉不易于理解。后来我从书上发现,其实上面的2,3步骤完全可以在build.xml中配置好,完全不需要这么麻烦。下面是书上的例子,我稍加修改,更易于理解。
1.Ant下载,解压缩,配置环境变量。
2.提前准备一个测试脚本(手机号码归属地测试.jmx)并测试通过。
3.创建目录、构建文件及批处理文件。
<?xml version="1.0"?> <project name="ant-jmeter" default="all"> <description> Jmeter+Ant+Jenkins <!--文件描述,可选择项--> </description> <!--定义变量并赋值,能够减少配置工作量,后面会用到--> <!--定义JMeter的工作目录,与%JMETER_HOME%指向同一个目录--> <property name="jmeter.home" value="D:\software\apache-jmeter-5.1"/> <!--定义JMeter脚本存放目录--> <property name="script.dir" value="D:\jmeterTest\script"/> <!--定义JMeter的测试结果存放目录--> <property name="jmeter.result.dir" value="D:\jmeterTest\resultLog"/> <!--定义测试报告Title--> <property name="report.title" value="Performance Test Summary Report"/> <!--定义测试结果名称--> <property name="jmeter.result.name" value="Test"/> <!--测试报告中是否显示失败事务,n为不显示--> <property name="show-data" value="n"/> <!--定义样式版本,有更新时只需要修改此处即可,其他调用处不用更改--> <property name="format" value="2.1"/> <condition property="style_version" value="_21"> <equals arg1="${format}" arg2="2.1"/> </condition> <condition property="funcMode"> <equals arg1="${show-data}" arg2="y"/> </condition> <condition property="funcMode" value="false"> <not> <equals arg1="${show-data}" arg2="y"/> </not> </condition> <!--定义依赖包目录--> <path id="jmeter.classpath"> <fileset dir="${jmeter.home}\extras"> <include name="ant-jmeter*.jar"/> </fileset> </path> <!--定义任务,即测试活动,依赖于ant-jmeter.jar包--> <taskdef name="jmeter" classpathref="jmeter.classpath" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/> <!--定义任务,一个是run,即运行脚本,一个是report,即生成报告--> <target name="all" depends="run,report"/> <!--定义run任务--> <target name="run"> <!--显示上面定义的${show-data}取值--> <echo>funcMode = ${funcMode}</echo> <!--删除前一次的测试报告,Html格式的,上面有定义${jmeter.result.name}变量的值--> <delete file="${jmeter.result.dir}/${jmeter.result.name}.html"/> <!--删除前一次的测试报告,Html格式的,上面有定义${jmeter.result.name}变量的值--> <delete file="${jmeter.result.dir}/${jmeter.result.name}.jtl"/> <jmeter jmeterhome="${jmeter.home}" jmeterproperties="${jmeter.home}/bin/jmeter.properties" resultlog="${jmeter.result.dir}/${jmeter.result.name}.jtl"> <!-- 指定测试脚本。"*.jmx"指包含此目录下的所有jmeter脚本 --> <testplans dir="${script.dir}" includes="*.jmx" /> <!--指定测试结果输出格式,在此指定的是xml,也可以指定成文本格式及CSV格式--> <!--先暂时指定成xml格式,后续会变换成文本格式--> <property name="jmeter.save.saveservice.output_format" value="xml"/> <!--是否记录错误信息,上面已经定义了${funcMode}=n--> <property name="jmeter.save.saveservice.response_data.on_error" value="${funcMode}"/> </jmeter> </target> <!--定义依赖包目录--> <property name="lib.dir" value="${jmeter.home}/lib"/> <!-- Use xalan copy from JMeter lib directory to ensure consistent processing with Java 1.4+ --> <path id="xslt.classpath"> <fileset dir="${lib.dir}" includes="xalan*.jar"/> <fileset dir="${lib.dir}" includes="serializer*.jar"/> </path> <!--定义report任务,此任务依赖于xslt-report,copy-images这2个任务--> <target name="report" depends="xslt-report,copy-images"> <echo>Report generated at ${report.datestamp}</echo> </target> <!--xslt-report是使用xslt来把xml文件转换成Html格式来显示--> <!--_message_xalan 被xslt-report依赖,由它生成报告--> <target name="xslt-report" depends="_message_xalan"> <tstamp><format property="report.datestamp" pattern="yyyy/MM/dd HH:mm"/></tstamp> <!--in:将测试结果作为输入--> <!--style:xslt定义的模板文件地址--> <xslt classpathref="xslt.classpath" force="true" in="${jmeter.result.dir}/${jmeter.result.name}.jtl" out="${jmeter.result.dir}/${jmeter.result.name}.html" style="${jmeter.home}/extras/jmeter-results-detail-report${style_version}.xsl"> <param name="showData" expression="${show-data}"/> <param name="titleReport" expression="${report.title}"/> <param name="dateReport" expression="${report.datestamp}"/> </xslt> </target> <!--copy-images用来cpoy图片,xslt模板中的图片由copy-images任务copy到报告目录--> <target name="copy-images" depends="verify-images" unless="samepath"> <!--生成Html报告时需要Copy图标到报告目录,expand.png展开图标,collapse.png收起图标--> <copy file="${jmeter.home}/extras/expand.png" tofile="${jmeter.result.dir}/expand.png"/> <copy file="${jmeter.home}/extras/collapse.png" tofile="${jmeter.result.dir}/collapse.png"/> </target> <target name="verify-images"> <condition property="samepath"> <equals arg1="${jmeter.result.dir}" arg2="${jmeter.home}/extras/" /> </condition> </target> <!--检查依赖--> <condition property="xalan.present"> <and> <!-- No need to check all jars; just check a few --> <available classpathref="xslt.classpath" classname="org.apache.xalan.processor.TransformerFactoryImpl"/> <available classpathref="xslt.classpath" classname="org.apache.xml.serializer.ExtendedContentHandler"/> </and> </condition> <target name="_message_xalan" unless="xalan.present"> <echo>Cannot find all xalan and/or serialiser jars</echo> <echo>The XSLT formatting may not work correctly.</echo> <echo>Check you have xalan and serializer jars in ${lib.dir}</echo> </target> <!--仅仅打印前面定义的变量的值,检查是否如你所愿,在定义变量时做调试用,可以去掉--> <echo>jmeter.home = ${jmeter.home}</echo> </project>
%ANT_HOME%\bin\ant -f .\build.xml
4.在命令行输入ant运行或者直接双击run.bat运行
D:\jmeterTest>ant Buildfile: D:\jmeterTest\build.xml [echo] jmeter.home = D:\software\apache-jmeter-5.1 run: [echo] funcMode = false [jmeter] Executing test plan: D:\jmeterTest\script\手机号码归属地测试.jmx D:\jmeterTest\resultLog\Test.jtl [jmeter] Creating summariser <summary> [jmeter] Created the tree successfully using D:\jmeterTest\script\手机号码 属地测试.jmx [jmeter] Starting the test @ Sun Apr 28 19:15:06 CST 2019 (1556450106344) [jmeter] Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump mes e on port 4445 [jmeter] summary = 1 in 00:00:02 = 0.4/s Avg: 1864 Min: 1864 Max 1864 Err: 0 (0.00%) [jmeter] Tidying up ... @ Sun Apr 28 19:15:09 CST 2019 (1556450109627) [jmeter] ... end of run _message_xalan: xslt-report: [xslt] Processing D:\jmeterTest\resultLog\Test.jtl to D:\jmeterTest\resu og\Test.html [xslt] Loading stylesheet D:\software\apache-jmeter-5.1\extras\jmeter-re ts-detail-report_21.xsl verify-images: copy-images: [copy] Copying 1 file to D:\jmeterTest\resultLog [copy] Copying 1 file to D:\jmeterTest\resultLog report: [echo] Report generated at 2019/04/28 19:15 all: BUILD SUCCESSFUL Total time: 13 seconds
测试后
浏览器打开HTML文件,显示正确
打开jtl文件
标签:目录 run ota processor display force ref 准备 实例
原文地址:https://www.cnblogs.com/zhengna/p/10775321.html