聯(lián)合使用(ant+jmeter+jenkins)搭建自動化接口測試框架

1、先編寫好一個jmeter的腳本,并在jmeter上跑通

這里我就用了一個登錄接口,做示例


image.png

通過后導(dǎo)入,并保存為.jmx文件

image.png

2、在桌面創(chuàng)建好一個空的文件夾,用于ant執(zhí)行,并在內(nèi)部創(chuàng)建好三類文件夾(result、scrpit、html)


image.png

result = 存放執(zhí)行后的jmx文件結(jié)果
html = 存放將jmx執(zhí)行結(jié)果進行轉(zhuǎn)換為html格式文件
scrpit = 存放jmx腳本

在這里我們把剛才跑通的jmx文件放到scrpit中


image.png

3、準備一個build.xml腳本,并把他放到我們剛才創(chuàng)建的文件夾的根目錄

image.png

需要注意的是,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  因為上面生成報告的時候,不會將相關(guān)的圖片也一起拷貝至目標目錄,所以,需要手動拷貝--> 
           <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  因為上面生成報告的時候,不會將相關(guān)的圖片也一起拷貝至目標目錄,所以,需要手動拷貝--> 
        <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到我們項目的文件夾中


image.png

然后輸入:ant


image.png

接下來就開始執(zhí)行,但是后來發(fā)現(xiàn)到了sendmail方法就止住不動了,并報錯:


image.png

經(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

image.png

image.png

繼續(xù)執(zhí)行文件


image.png

發(fā)現(xiàn)這次成功了,而且郵箱也收到了報告


image.png

正文是這樣的:


image.png

并且?guī)в懈郊ò裩tml報告的目錄壓縮):


image.png

那么我們就可以進入jenkins構(gòu)建中了(其實每次不一定非要跑通,只要我們第一次ant成功了,那么后續(xù)只需要更改jmx文件就行或者不需要更改,在原先的jmx上重命名替換也是可以的)

build文件下載地址(百度網(wǎng)盤):

鏈接: https://pan.baidu.com/s/1oW047bCE7DB7wDdDWPp8Lg 提取碼: smev

4、jenkins構(gòu)建任務(wù)

打開任意一個瀏覽器,輸入:localhost:8080,進入jenkins中


image.png

突然發(fā)現(xiàn)jenkins也啟動不了了? 趕忙又去找解決辦法,

1)打開Windows的cmd命令窗口,將路徑切換到Jenkins安裝目錄文件下

2)在cmd窗口輸入java -jar jenkins.war --httpPort=9000

3)打開瀏覽器,輸入http://localhost:9000/,進入Jenkins界面

弄好了以后再次打開

image.png

這次成功進去了,下面開始在jenkins中配置Ant


image.png

點擊系統(tǒng)管理,進入后,下拉,找到全局工具配置

image.png

進入后,新增ant,添加ant安裝路徑并應(yīng)用、保存,本地的jenkin,ANT_Home填寫ant的安裝路徑,不要勾選自動安裝


1646726283(1).png

如果沒有Ant怎么辦? 說明你沒有安裝相關(guān)插件,要去官網(wǎng)下載
官網(wǎng)鏈接:https://updates.jenkins-ci.org/download/plugins/
打開后,在搜索框中輸入你要下載的插件名就可以

配置好ant后,點擊新建任務(wù),創(chuàng)建一個新項目

image.png

image.png

勾選構(gòu)建中的定時建構(gòu),可以按照規(guī)定的時間有規(guī)律性的建構(gòu),勾選后面的?號可以查看構(gòu)建的命令規(guī)格


image.png

勾選建立中的調(diào)用螞蟻(注意,我用的是谷歌翻譯后的,大家可以按照對應(yīng)的位置去選擇)


image.png

點擊高級


image.png

填寫我們上述創(chuàng)建的文件夾路徑(也就是需要持續(xù)集成的jmx文件),ant選擇之前配置的版本,后面跟上build.xml


image.png

然后應(yīng)用、保存


image.png

最后構(gòu)建下


image.png

可以看到,本次構(gòu)建成功了

最后看下控制臺輸出:


image.png

這樣下來,自動化接口測試框架就已經(jīng)搭建好了,可以開展持續(xù)集成的工作。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,362評論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,577評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,486評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,852評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 72,600評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,944評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,944評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,108評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,652評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,385評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,616評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,111評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,798評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,205評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,537評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,334評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 48,570評論 2 379

推薦閱讀更多精彩內(nèi)容