標籤:
最近在使用jmeter寫指令碼來進行測試,最終寫了很多份指令碼,然後,就在想,這麼多指令碼,我不可能一個一個的手動去點啊,有沒有什麼辦法來批量運行Jmeter指令碼呢?
這個時候,自然而然地想到了萬能的ant,希望它能有相應的jmeter task。
哎,哎,查了一下,還真有,爽歪歪啊。
下面簡單說明一下,如果使用:
① 首先,為了能夠在ant中使用jmeter task,必須將“ant-jmeter-1.1.1.jar”這個jar包放到ant的classpath中去。這個jar包位置 jmeter的安裝目錄下的 extras 目錄中。
PS:可直接將這個jar拷貝至ant安裝目錄下的lib目錄中去就可以了。
② 編寫指令碼
Ant代碼
- <?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="F:\xxxxx\Jmeter" />
- <!-- jmeter產生jtl格式的結果報告的路徑-->
- <property name="jmeter.result.jtl.dir" value="F:\xxxxx\resultLog\jtl" />
- <!-- jmeter產生html格式的結果報告的路徑-->
- <property name="jmeter.result.html.dir" value="F:\xxxxx\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" />
-
- <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:\test_case_path" 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>
③ 產生的結果報告如
④ 下面說一個,我在使用過程中遇到的一個問題: 就是在執行 最後產生報告的 task 時,一直報下面這個錯:
TransformerException, Content is not allowed in prolog.
後來在ant-jmeter官網上查到了原因:
Java代碼
- Note: As of JMeter 1.9RC2(?), the default results output format is now csv. It must be changed to xml in order to use the xslt task to create the html report:
所以需要修改Jmeter的一個配置
Java代碼
- jmeter.save.saveservice.output_format=xml
然後就可以正常產生報告了啊
附: ant-jmeter官網: http://www.programmerplanet.org/projects/jmeter-ant-task/
轉:通過ant來批量執行jmeter指令碼,並產生報告(附: 產生報告時報“Content is not allowed in prolog”這個錯誤的解決方案)