1磷账、先編寫好一個jmeter的腳本掸哑,并在jmeter上跑通
這里我就用了一個登錄接口,做示例
通過后導入玷坠,并保存為.jmx文件
2撇叁、在桌面創(chuàng)建好一個空的文件夾供鸠,用于ant執(zhí)行,并在內(nèi)部創(chuàng)建好三類文件夾(result陨闹、scrpit楞捂、html)
result = 存放執(zhí)行后的jmx文件結(jié)果
html = 存放將jmx執(zhí)行結(jié)果進行轉(zhuǎn)換為html格式文件
scrpit = 存放jmx腳本
在這里我們把剛才跑通的jmx文件放到scrpit中
3、準備一個build.xml腳本趋厉,并把他放到我們剛才創(chuàng)建的文件夾的根目錄
需要注意的是寨闹,build文件名不可被修改,只允許叫build.xml
如果收到的郵件是亂碼君账,encoding="GBK"改成encoding="UTF-8"
并且注意第一行代碼前不要有空行或者空格鼻忠,否則無法運行
<?xml version="1.0" encoding="GBK"?>
<project name="ant-jmeter-test" default="run" basedir=".">
<tstamp>
<format property="time" pattern="yyyyMMddhhmm" />
</tstamp>
<target name="run">
<antcall target="clear1" />
<antcall target="test1" />
<antcall target="report1" />
<antcall target="sendmail1" />
</target>
<target name="test1">
<echo message="開始執(zhí)行jmeter腳本..."></echo>
<taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
<jmeter jmeterhome="jmeter家目錄" resultlog="jtl路徑\1.jtl">
<!-- 聲明要運行的腳本。"*.jmx"指包含此目錄下的所有jmeter腳本-->
<testplans dir="腳本路徑" includes="腳本名稱" />
<property name="jmeter.save.saveservice.output_format" value="xml"/>
</jmeter>
</target>
<path id="xslt.classpath">
<fileset dir="jmeter中l(wèi)ib路徑" includes="xalan*.jar"/>
<fileset dir="jmeter中l(wèi)ib路徑" includes="serializer*.jar"/>
</path>
<target name="report1">
<echo message="開始轉(zhuǎn)換執(zhí)行結(jié)果..."></echo>
<tstamp> <format property="time" pattern="yyyy/MM/dd HH:mm" /></tstamp>
<xslt classpathref="xslt.classpath"
force="true"
in="jtl路徑\1.jtl"
out="html路徑\1.html"
style="jmeter中exaters的路徑+jmeter-results-detail-report_21的名稱">
<param name="titleReport" expression="xxxxx"/>
<param name="dateReport" expression="${time}"/>
</xslt>
<!-- jmeter-results-detail-report_21 因為上面生成報告的時候杈绸,不會將相關的圖片也一起拷貝至目標目錄帖蔓,所以,需要手動拷貝-->
<copy todir="html的路徑">
<fileset dir="jmeter中exaters的路徑">
<include name="collapse.png" />
<include name="expand.png" />
</fileset>
</copy>
</target>
<target name="clear1">
<!-- 每次執(zhí)行前先刪除清空jtl和html文件夾瞳脓,釋放空間 -->
<echo message="釋放空間,清空jtl和html文件夾中 ..."></echo>
<delete dir="jtl的路徑" />
<delete dir="html的路徑" />
<!-- 刪除單個文件-- >
<delete file="jtl的路徑\1.jtl" />
<sleep seconds="2"/>
<echo message="釋放完成 ..."></echo>
</target>
<target name="sendmail1">
<!--把報告進行壓縮打包-->
<jar jarfile="report的路徑.rar" basedir="html的路徑"/>
<!--把文件貼到郵件正文-->
<loadfile property="html" srcFile="html的路徑\1.html" encoding="UTF-8">
<filterchain>
<expandproperties />
</filterchain>
</loadfile>
<mail mailhost="smtp.126.com"
mailport="25" subject="郵件標題"
messagemimetype="text/html" tolist="norma_bai@163.com"
user="norma_bai@163.com" password="bj900420">
<from address="norma_bai@163.com"/>
<!--發(fā)送附件-->
<fileset dir="在jmeter中創(chuàng)建的文件夾">
<include name="report.rar"/>
</fileset>
<message><![CDATA[
<p>維度電影項目組收:</p>
<pre> ${html} </pre>
<p>自定義郵件內(nèi)文字</p>
]]></message>
</mail>
</target>
</project>
對這個build內(nèi)容進行填充
<?xml version="1.0" encoding="GBK"?>
<project name="ant-jmeter-test" default="run" basedir=".">
<tstamp>
<format property="time" pattern="yyyyMMddhhmm" />
</tstamp>
<target name="run">
<antcall target="clear1" />
<antcall target="test1" />
<antcall target="report1" />
<antcall target="sendmail1" />
</target>
<target name="test1">
<echo message="開始執(zhí)行jmeter腳本..."></echo>
<taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
<jmeter jmeterhome="E:\apache-jmeter-5.2.1" resultlog="C:\Users\Administrator\Desktop\ant\result\1.jtl">
<!-- 聲明要運行的腳本塑娇。"*.jmx"指包含此目錄下的所有jmeter腳本-->
<testplans dir="C:\Users\Administrator\Desktop\ant\script" includes="*.jmx" />
<property name="jmeter.save.saveservice.output_format" value="xml"/>
</jmeter>
</target>
<path id="xslt.classpath">
<fileset dir="E:\apache-jmeter-5.2.1\lib" includes="xalan*.jar"/>
<fileset dir="E:\apache-jmeter-5.2.1\lib" includes="serializer*.jar"/>
</path>
<target name="report1">
<echo message="開始轉(zhuǎn)換執(zhí)行結(jié)果..."></echo>
<tstamp> <format property="time" pattern="yyyy/MM/dd HH:mm" /></tstamp>
<xslt classpathref="xslt.classpath"
force="true"
in="C:\Users\Administrator\Desktop\ant\result\1.jtl"
out="C:\Users\Administrator\Desktop\ant\html\1.html"
style="E:\apache-jmeter-5.2.1\extras\jmeter-results-detail-report_21.xsl">
<param name="titleReport" expression="測試報告"/>
<param name="dateReport" expression="${time}"/>
</xslt>
<!-- jmeter-results-detail-report_21 因為上面生成報告的時候,不會將相關的圖片也一起拷貝至目標目錄劫侧,所以埋酬,需要手動拷貝-->
<copy todir="C:\Users\Administrator\Desktop\ant\html">
<fileset dir="E:\apache-jmeter-5.2.1\extras">
<include name="collapse.png" />
<include name="expand.png" />
</fileset>
</copy>
</target>
<target name="clear1">
<!-- 每次執(zhí)行前先刪除清空jtl和html文件夾,釋放空間 -->
<echo message="釋放空間,清空jtl和html文件夾中 ..."></echo>
<delete dir="C:\Users\Administrator\Desktop\ant\result" />
<delete dir="C:\Users\Administrator\Desktop\ant\html" />
<!-- 刪除單個文件-->
<delete file="C:\Users\Administrator\Desktop\ant\1.rar" />
<sleep seconds="2"/>
<echo message="釋放完成 ..."></echo>
</target>
<target name="sendmail1">
<!--把報告進行壓縮打包-->
<jar jarfile="C:\Users\Administrator\Desktop\ant\1.rar" basedir="C:\Users\Administrator\Desktop\ant\html"/>
<!--把文件貼到郵件正文-->
<loadfile property="html" srcFile="C:\Users\Administrator\Desktop\ant\html\1.html" encoding="UTF-8">
<filterchain>
<expandproperties />
</filterchain>
</loadfile>
<mail mailhost="smtp.qq.com"
mailport="25" subject="測試結(jié)果"
messagemimetype="text/html" tolist="1429622029@qq.com"
user="1429622029@qq.com" password="郵箱授權(quán)碼">
<from address="1429622029@qq.com"/>
<!--發(fā)送附件-->
<fileset dir="C:\Users\Administrator\Desktop\ant">
<include name="1.rar"/>
</fileset>
<message><![CDATA[
<p>項目組收:</p>
<pre> ${html} </pre>
<p>自定義郵件內(nèi)文字</p>
]]></message>
</mail>
</target>
</project>
我們來跑一下這個build烧栋,看能否跑通
打開cmd
cd到我們項目的文件夾中
然后輸入:ant
接下來就開始執(zhí)行写妥,但是后來發(fā)現(xiàn)到了sendmail方法就止住不動了,并報錯:
經(jīng)過我網(wǎng)上搜索答案审姓,發(fā)現(xiàn)在安裝ant的目錄下的lib中缺少jar包(activation.jar珍特、commons-lang3-3.8.1.jar、mail.jar)魔吐,后來又去下載扎筒,前前后后浪費了大量的時間,這里把百度鏈接發(fā)給大家酬姆,如果出現(xiàn)這類錯誤嗜桌,直接下載然后丟到ant目錄中的lib目錄就可以
鏈接: https://pan.baidu.com/s/18BWUMrW7ABfBlvU_b3Mppw 提取碼: 8jk4
繼續(xù)執(zhí)行文件
發(fā)現(xiàn)這次成功了,而且郵箱也收到了報告
正文是這樣的:
并且?guī)в懈郊ò裩tml報告的目錄壓縮):
那么我們就可以進入jenkins構(gòu)建中了(其實每次不一定非要跑通辞色,只要我們第一次ant成功了骨宠,那么后續(xù)只需要更改jmx文件就行或者不需要更改,在原先的jmx上重命名替換也是可以的)
build文件下載地址(百度網(wǎng)盤):
鏈接: https://pan.baidu.com/s/1oW047bCE7DB7wDdDWPp8Lg 提取碼: smev
4、jenkins構(gòu)建任務
打開任意一個瀏覽器层亿,輸入:localhost:8080壶唤,進入jenkins中
突然發(fā)現(xiàn)jenkins也啟動不了了? 趕忙又去找解決辦法棕所,
1)打開Windows的cmd命令窗口闸盔,將路徑切換到Jenkins安裝目錄文件下
2)在cmd窗口輸入java -jar jenkins.war --httpPort=9000
3)打開瀏覽器,輸入http://localhost:9000/琳省,進入Jenkins界面
弄好了以后再次打開
這次成功進去了迎吵,下面開始在jenkins中配置Ant
點擊系統(tǒng)管理,進入后针贬,下拉击费,找到全局工具配置
進入后,新增ant桦他,添加ant安裝路徑并應用蔫巩、保存,本地的jenkin快压,ANT_Home填寫ant的安裝路徑圆仔,不要勾選自動安裝
如果沒有Ant怎么辦? 說明你沒有安裝相關插件坪郭,要去官網(wǎng)下載
官網(wǎng)鏈接:https://updates.jenkins-ci.org/download/plugins/
打開后,在搜索框中輸入你要下載的插件名就可以
配置好ant后脉幢,點擊新建任務歪沃,創(chuàng)建一個新項目
勾選構(gòu)建中的定時建構(gòu),可以按照規(guī)定的時間有規(guī)律性的建構(gòu)嫌松,勾選后面的沪曙?號可以查看構(gòu)建的命令規(guī)格
勾選建立中的調(diào)用螞蟻(注意,我用的是谷歌翻譯后的萎羔,大家可以按照對應的位置去選擇)
點擊高級
填寫我們上述創(chuàng)建的文件夾路徑(也就是需要持續(xù)集成的jmx文件)液走,ant選擇之前配置的版本,后面跟上build.xml
然后應用外驱、保存
最后構(gòu)建下
可以看到育灸,本次構(gòu)建成功了
最后看下控制臺輸出:
這樣下來腻窒,自動化接口測試框架就已經(jīng)搭建好了昵宇,可以開展持續(xù)集成的工作。