搭建ant+jenkins+jmeter自動化接口測試框架(詳細篇)

引言

爲什麼要持續集成?

1、減少風險

2、減少假定

3、減少重複過程

4、增強項目的可見性

5、持續集成可以帶來兩點積極效果:

(1)有效決策:持續集成系統爲項目構建狀態和品質指標提供了及時的信息,有些持續集成系統可以報告功能完成度和缺陷率。

(2)注意到趨勢:由於經常集成,我們可以看到一些趨勢,如構建成功或失敗、總體品質以及其它的項目信息。

一、配置jmeter、Ant、jenkins環境

下載Jmeter工具:

Jmeter官網
在這裏插入圖片描述

<1> 下載jdk:
鏈接: https://pan.baidu.com/s/1yJX_2P5Y115bJqQKqkpQCg 提取碼: 1ps4

<2>配置環境變量:
新建JMETER_HOME: 值爲安裝jmeter的根目錄
在這裏插入圖片描述
新建JAVA_HOME: 值爲JDK安裝目錄
在這裏插入圖片描述
新建CLASSPATH: 值爲
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%JMETER_HOME\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar

在PATH裏添加三行:
1)、jdk的安裝目錄到bin(注意,安裝jdk後,會默認寫上一個jdk路徑,如果和本機安裝不對應,需要手動更改)
2)、;%JAVA_HOME%\bin;
3)、%JMETER_HOME%\bin

在這裏插入圖片描述
<3>驗證配置好的jdk環境
打開cmd,輸入java -version/javac/java

在這裏插入圖片描述
<4>驗證jmeter

打開cmd,輸入jmeter

在這裏插入圖片描述
彈出jmeter工具既表示配置環境成功

<5> 下載ant工具

方式一:
ant官網下載地址
在這裏插入圖片描述

方式二 百度網盤獲取下載:
鏈接:https://pan.baidu.com/s/1QitunpZiJB9NA-F18TXxeQ
提取碼:d7fn

下載好後安裝

<6> 配置ant環境變量

新建ANT_HOME,值爲安裝ant的絕對路徑
在這裏插入圖片描述

在PATH中加入安裝ant 的絕對路徑到bin
在這裏插入圖片描述

在CLASSPATH中加入安裝ant的絕對路徑到lib,記得用半角;號隔開

在這裏插入圖片描述
<7> 驗證ant環境
打開cmd,輸入:ant -version,出現ant版本既配置成功

在這裏插入圖片描述

<8> 下載jenkins並安裝

Jenkins官網:
https://jenkins.io/

Jenkins(百度網盤):
鏈接地址:https://pan.baidu.com/s/1hWC5vmglb9WNYFTQIlnDcw
提取碼: apeg

之後按照提示安裝就行,出現選擇插件安裝方式,一種爲默認的一種爲手動,這裏我們選擇默認

在這裏插入圖片描述
安裝好以後,如果有失敗的插件,不要緊,因爲很正常,我們點擊繼續就行

會出現配置jenkins的url,這裏默認就行(默認的話端口號是8080)

創建用戶(賬號、密碼)、點擊開始,按提示走就可以

<9>驗證jenkins安裝完畢

打開任意一個瀏覽器,輸入localhost:8080(就是一開始的默認jenkins端口號 )

在這裏插入圖片描述

到此,ant、jmeter、jenkins全部安裝好並配完相關環境

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

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

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

在這裏插入圖片描述
通過後導入,並保存爲.jmx文件

在這裏插入圖片描述
在這裏插入圖片描述
2、在桌面創建好一個空的文件夾,用於ant執行,並在內部創建好三類文件夾(result、scrpit、html)

在這裏插入圖片描述
result = 存放執行後的jmx文件結果
html = 存放將jmx執行結果進行轉換爲html格式文件
scrpit = 存放jmx腳本

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

在這裏插入圖片描述

3、準備一個build.xml腳本,並把他放到我們剛纔創建的文件夾的根目錄

在這裏插入圖片描述

需要注意的是,build文件名不可被修改,只允許叫build.xml

<?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="開始執行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中lib路徑" includes="xalan*.jar"/>
         <fileset dir="jmeter中lib路徑" includes="serializer*.jar"/>
    </path>
	
    <target name="report1">
	<echo message="開始轉換執行結果..."></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">
	<!-- 每次執行前先刪除清空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="[email protected]"
	user="[email protected]" password="bj900420">
	<from address="[email protected]"/>
	<!--發送附件-->
	<fileset dir="在jmeter中創建的文件夾">
   		 <include name="report.rar"/>
  	 </fileset>
	<message><![CDATA[ 
	<p>維度電影項目組收:</p>
	<pre> ${html} </pre>
	<p>自定義郵件內文字</p>
	]]></message>
	</mail>
	</target>
</project>

對這個build內容進行填充

<?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="開始執行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\自動化接口測試框架\result\1.jtl">
             <!-- 聲明要運行的腳本。"*.jmx"指包含此目錄下的所有jmeter腳本-->
            <testplans dir="C:\Users\Administrator\Desktop\自動化接口測試框架\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="開始轉換執行結果..."></echo>
	<tstamp> <format property="time" pattern="yyyy/MM/dd HH:mm" /></tstamp>
        <xslt classpathref="xslt.classpath"
              force="true"
	 in="C:\Users\Administrator\Desktop\自動化接口測試框架\result\1.jtl"
              out="C:\Users\Administrator\Desktop\自動化接口測試框架\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\自動化接口測試框架\html">
            <fileset dir="E:\學習相關\apache-jmeter-5.2.1\extras">
                <include name="collapse.png" />
                <include name="expand.png" />
            </fileset>
        </copy>			
    </target>

		<target name="clear1">
	<!-- 每次執行前先刪除清空jtl和html文件夾,釋放空間 -->
		<echo message="釋放空間,清空jtl和html文件夾中 ..."></echo>
		<delete dir="C:\Users\Administrator\Desktop\自動化接口測試框架\result" />
		<delete dir="C:\Users\Administrator\Desktop\自動化接口測試框架\html" />
		<!-- 刪除單個文件-->
		<delete file="C:\Users\Administrator\Desktop\自動化接口測試框架\1.rar" />
		<sleep seconds="2"/>  
		<echo message="釋放完成 ..."></echo>
	</target>


	<target name="sendmail1">
	<!--把報告進行壓縮打包-->
	<jar jarfile="C:\Users\Administrator\Desktop\自動化接口測試框架\1.rar" basedir="C:\Users\Administrator\Desktop\自動化接口測試框架\html"/>
	<!--把文件貼到郵件正文-->
	<loadfile property="html" srcFile="C:\Users\Administrator\Desktop\自動化接口測試框架\html\1.html" encoding="UTF-8">
	<filterchain>
			<expandproperties />
		</filterchain>
	</loadfile>
	
	<mail mailhost="smtp.qq.com" 
	mailport="25" subject="登錄接口測試結果" 
	messagemimetype="text/html" tolist="[email protected]"
	user="[email protected]" password="qq郵箱授權碼">
	<from address="[email protected]"/>
	<!--發送附件-->
	<fileset dir="C:\Users\Administrator\Desktop\自動化接口測試框架">
   		 <include name="1.rar"/>
  	 </fileset>
	<message><![CDATA[ 
	<p>維度電影項目組收:</p>
	<pre> ${html} </pre>
	<p>自定義郵件內文字</p>
	]]></message>
	</mail>
	</target>
</project>

我們來跑一下這個build,看能否跑通

打開cmd

cd到我們項目的文件夾中
在這裏插入圖片描述

然後輸入:ant
在這裏插入圖片描述
接下來就開始執行,但是後來發現到了sendmail方法就止住不動了,並報錯:

在這裏插入圖片描述
經過我網上搜索答案,發現在安裝ant的目錄下的lib中缺少jar包(activation.jar、commons-lang3-3.8.1.jar、mail.jar),後來又去下載,前前後後浪費了大量的時間,這裏把百度鏈接發給大家,如果出現這類錯誤,直接下載然後丟到ant目錄中的lib目錄就可以
鏈接: https://pan.baidu.com/s/18BWUMrW7ABfBlvU_b3Mppw 提取碼: 8jk4
在這裏插入圖片描述
在這裏插入圖片描述

繼續執行文件

在這裏插入圖片描述

發現這次成功了,而且郵箱也收到了報告

在這裏插入圖片描述
正文是這樣的:

在這裏插入圖片描述
並且帶有附件(把html報告的目錄壓縮):
在這裏插入圖片描述

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

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

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

4、jenkins構建任務

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

在這裏插入圖片描述
突然發現jenkins也啓動不了了? 趕忙又去找解決辦法,

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

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

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

轉載博客:https://blog.csdn.net/you23hai45/article/details/79644176

弄好了以後再次打開

在這裏插入圖片描述
這次成功進去了,下面開始在jenkins中配置Ant
在這裏插入圖片描述
點擊系統管理,進入後,下拉,找到全局工具配置

在這裏插入圖片描述
進入後,新增ant,添加ant安裝路徑並應用、保存
在這裏插入圖片描述
如果沒有Ant怎麼辦? 說明你沒有安裝相關插件,要去官網下載
官網鏈接:https://updates.jenkins-ci.org/download/plugins/
打開後,在搜索框中輸入你要下載的插件名就可以

配置好ant後,點擊新建任務,創建一個新項目

在這裏插入圖片描述

在這裏插入圖片描述
勾選構建中的定時建構,可以按照規定的時間有規律性的建構,勾選後面的?號可以查看構建的命令規格
在這裏插入圖片描述
勾選建立中的調用螞蟻(注意,我用的是谷歌翻譯後的,大家可以按照對應的位置去選擇)

在這裏插入圖片描述

點擊高級

在這裏插入圖片描述
填寫我們上述創建的文件夾路徑(也就是需要持續集成的jmx文件),後面跟上build.xml
在這裏插入圖片描述

然後應用、保存
在這裏插入圖片描述

最後構建下

在這裏插入圖片描述
可以看到,本次構建成功了
在這裏插入圖片描述
最後看下控制檯輸出:

在這裏插入圖片描述
這樣下來,自動化接口測試框架就已經搭建好了,可以開展持續集成的工作

有問題博客下方留言

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章