最近工作需要在公司使用jmeter實作接口自動化測試,我就選取了jmeter+ant+jenkins,搭建環境過程如下
本地環境:win7 64位 雲桌面系統
1,本地電腦上JDK安裝,網上教程很多,這裡不再記錄
2,本地電腦上Apache jmeter下載下傳與安裝
位址:http://jmeter.apache.org/

這裡我選擇下載下傳的是4.0版本的,下載下傳到D盤
下載下傳下來之後解壓,這隻jmeter的環境變量
變量名:JMETER_HOME
變量值:D:\apache-jmeter-4.0
變量名:CLASSPATH
變量值:
%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib/logkit-2.0.jar;
變量名:Path
變量值:D:\apache-ant\bin;
指令行中輸入jmeter -v 出現以下便是配置好了
3,下載下傳及配置ant
下載下傳位址:http://ant.apache.org/
将下載下傳的ant解壓放到jmeter一塊,我都是放在D盤根目錄下
先将D:\apache-jmeter-4.0\extras\extra檔案夾下的ant-jmeter-1.1.1.jar 包放到D:\apache-ant\lib 目錄下
配置ant的環境變量
變量名:ANT_HOME
變量值:D:\apache-ant
變量名:CLASSPATH
變量值:D:\apache-ant\lib
變量名:Path
變量值:D:\apache-ant\bin
指令行輸入ant -v
4,配置 jmeter+ant
在D:\apache-ant目錄下建立一個JmeterTest的檔案夾,這個檔案夾我們以後可以将jmeter的 .jmx腳本放到這裡
在D:\apache-ant\JmeterTest建立一個D:\apache-ant\JmeterTest\resultLog檔案夾,這個檔案我們可以存放報告
在D:\apache-ant\JmeterTest\resultLog檔案下配置html檔案夾放置生成的html格式的報告,配置一個jtl檔案夾放置jtl格式的報告
在D:\apache-ant\JmeterTest建立一個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:\apache-jmeter-4.0" />
<!-- jmeter生成jtl格式的結果報告的路徑-->
<property name="jmeter.result.jtl.dir" value="D:\apache-ant\JmeterTest\resultLog\jtl" />
<!-- jmeter生成html格式的結果報告的路徑-->
<property name="jmeter.result.html.dir" value="D:\apache-ant\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" />
<!-- 接收測試報告的郵箱 -->
<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-ant\JmeterTest" includes="*.jmx" />
<property name="jmeter.save.saveservice.output_format" value="xml"/>
<property name="jmeter.save.saveservice.output_format" value="xml"/>
<property name="jmeter.save.saveservice.assertion_results" value="all"/>
<property name="jmeter.save.saveservice.bytes" value="true"/>
<property name="file_format.testlog" value="${format}"/>
<property name="jmeter.save.saveservice.response_data.on_error" value="${funcMode}"/>
</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>
這裡需要注意每個檔案位址都需要一個一個的小心配置,如果漏掉某一個沒有配置會出錯
build.xml檔案内容的生成報到的部分:它的作用就是把生成的.jtl資料檔案轉換為.html格式的報告
這裡我們還要把 D:\apache-jmeter-4.0\bin目錄下的jmeter.properties修改如下,去掉注釋,這樣設定生成的格式是CSV格式
測試一下,打開jmeter添加線程組,線程屬性先不設定,添加HTTP請求,伺服器名稱或IP一欄中輸入www.baidu.com
添加監聽器-檢視結果樹,先運作一下,檢視結果,我們設定的請求是成功的
儲存到我們剛設定好的D:\apache-ant\JmeterTest檔案夾下,指令行進入該檔案夾下,輸入ant,檢視結果
build 成功,我們到D:\apache-ant\JmeterTest\resultLog\html目錄下有html格式的報告,打開檢視報告
min time 、max time 都是NaN
将D:\apache-jmeter-4.0\lib目錄下的xalan-2.7.2.jar、serializer-2.7.2.jar兩個包拷貝到D:\apache-ant\lib目錄下,再次運作ant,檢視結果
這下min time 、max time 顯示内容了
5,配置jenkins+ant了
我在本地搭建好jmeter+ant之後便直接在遠端的Jenkins上配置,沒有在jenkins上配置jmeter與ant,結果報錯
Building in workspace /root/.jenkins/workspace/jmeter
ERROR: Unable to find build script at D:\Test\apache-ant\JmeterTest\build.xml
[htmlpublisher] Archiving HTML reports...
[htmlpublisher] Archiving at PROJECT level D:\Test\apache-ant\JmeterTest\resultLog\html to /root/.jenkins/jobs/jmeter/htmlreports/Report
ERROR: Specified HTML directory 'D:\Test\apache-ant\JmeterTest\resultLog\html' does not exist.
Finished: FAILURE
後來才知道腳本是需要在遠端的jenkins伺服器上跑的,是以需要在jenkins的伺服器上也需要配置,而且jenkins配置的内容都是伺服器的位址檔案,是以報錯是必然的(當然一開始我是不知道的)
下文:https://blog.csdn.net/be_x_man/article/details/81075197