不需要寫代碼的自動(dòng)化測(cè)試框架(二)

在上一篇文章中,我們已經(jīng)學(xué)會(huì)了如何進(jìn)行接口自動(dòng)化框架的搭建,自動(dòng)化測(cè)試的工作也能夠順利開(kāi)展起來(lái)了,但是呢,在實(shí)際項(xiàng)目中使用起來(lái),還是缺少了一些東西,體驗(yàn)不太好,比如:
1、為了方便管理,多個(gè)項(xiàng)目的腳本存放在不同的目錄下面,這時(shí)候要執(zhí)行所有的自動(dòng)化用例怎么辦?
2、往往我們需要一個(gè)概要的測(cè)試報(bào)告來(lái)關(guān)心整體的自動(dòng)化測(cè)試情況,還需要一個(gè)詳情的測(cè)試報(bào)告來(lái)定位自動(dòng)化測(cè)試失敗的原因,這時(shí)候怎么生成兩種不同類型得測(cè)試報(bào)告?
3、怎么把上面的測(cè)試報(bào)告集成到Jenkins中,方便查看每次構(gòu)建的結(jié)果?
4、隨著自動(dòng)化次數(shù)的執(zhí)行,大家會(huì)發(fā)現(xiàn)測(cè)試報(bào)告目錄里面的文件越來(lái)越多、越來(lái)越大,那么怎么保證每次都是最新的測(cè)試報(bào)告結(jié)果呢?

這篇文章就來(lái)為大家一 一解決這些疑問(wèn)
一、執(zhí)行多個(gè)目錄下的自動(dòng)化用例
進(jìn)入Jmeter下的build目錄,修改build.xml文件,找到下面的代碼行

<target name="test">
    <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
    <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
        <!-- 聲明要運(yùn)行的腳本"*.jmx"指包含此目錄下的所有jmeter腳本-->
        <testplans dir="D:\apache-jmeter-5.1.1\script_smoke" includes="*.jmx" />
        <property name="jmeter.save.saveservice.output_format" value="xml"/>
    </jmeter>
</target>

假如還有腳本存放在"D:\apache-jmeter-5.1.1\script_project"下面,那么在以上代碼中再添加一行需要執(zhí)行腳本的地址即可

<target name="test">
    <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
    <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
        <!-- 聲明要運(yùn)行的腳本"*.jmx"指包含此目錄下的所有jmeter腳本-->
        <testplans dir="D:\apache-jmeter-5.1.1\script_smoke" includes="*.jmx" />
        <testplans dir="D:\apache-jmeter-5.1.1\script_project" includes="*.jmx" />
        <property name="jmeter.save.saveservice.output_format" value="xml"/>
    </jmeter>
</target>

二、測(cè)試概要報(bào)告和詳情報(bào)告配置
先上兩張圖片,讓我們直觀的感受下概要報(bào)告和詳情報(bào)告的區(qū)別

image.png

image.png

從上面兩張圖可以看出,概要報(bào)告可以很快速的看出所有自動(dòng)化測(cè)試用例的執(zhí)行情況,詳細(xì)報(bào)告可以很清晰的描述接口的請(qǐng)求地址、請(qǐng)求參數(shù)、響應(yīng)參數(shù)等信息,在用例執(zhí)行失敗的時(shí)候,可以很方便的定位問(wèn)題
接下來(lái)我們看下怎么配置才能生成這兩種不同類型的測(cè)試報(bào)告
1、首先進(jìn)入Jmeter的安裝目錄,在extras目錄下面找下是否存在jmeter-results-detail-report_21.xsl這個(gè)文件
image.png

如果沒(méi)有這個(gè)文件,在網(wǎng)上下載一個(gè)放在extras目錄即可

2、進(jìn)入Jmeter下的build目錄,修改build.xml文件,找到下面的代碼

    <!-- 生成的報(bào)告的前綴-->  
<property name="ReportName" value="SmokeReport" />
<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" />

然后在這行代碼后面加上一個(gè)新的屬性值,如下所示

<property name="detail" value="_detail" />
<property name="jmeter.result.jtlNamedetail" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />
<property name="jmeter.result.htmlNamedetail" value="${jmeter.result.html.dir}/${ReportName}${time}${detail}.html" />
image.png

3、繼續(xù)在build.xml文件中找到下面的代碼,添加一個(gè)報(bào)告標(biāo)簽

    <target name="report">
    <tstamp> <format property="report.datestamp" pattern="yyyy/MM/dd HH:mm" /></tstamp>
   <xslt 
          classpathref="xslt.classpath"
          force="true"
          in="${jmeter.result.jtlNamedetail}"
          out="${jmeter.result.htmlNamedetail}"
          style="${jmeter.home}/extras/jmeter-results-shanhe-me.xsl">
          <param name="dateReport" expression="${report.datestamp}"/>
   </xslt>

在上面這行代碼下面,添加"詳細(xì)報(bào)告"的標(biāo)簽內(nèi)容,如下

    <xslt 
          classpathref="xslt.classpath"
          force="true"
          in="${jmeter.result.jtlName}"
          out="${jmeter.result.htmlName}"
          style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl">
          <param name="dateReport" expression="${report.datestamp}"/>
   </xslt>

添加后的效果如下圖所示


image.png

4、"詳細(xì)報(bào)告"的標(biāo)簽添加完成后,繼續(xù)將目錄切換到Jmeter的bin目錄下,打開(kāi)jmeter.properties文件,將以下屬性全部放開(kāi)并修改如下

    jmeter.save.saveservice.data_type=true
    jmeter.save.saveservice.label=true
    jmeter.save.saveservice.response_code=true
    jmeter.save.saveservice.response_data=true
    jmeter.save.saveservice.response_data.on_error=false
    jmeter.save.saveservice.response_message=true
    jmeter.save.saveservice.successful=true
    jmeter.save.saveservice.thread_name=true
    jmeter.save.saveservice.time=true
    jmeter.save.saveservice.subresults=true
    jmeter.save.saveservice.assertions=true
    jmeter.save.saveservice.latency=true
    jmeter.save.saveservice.connect_time=true
    jmeter.save.saveservice.samplerData=false
    jmeter.save.saveservice.responseHeaders=false
    jmeter.save.saveservice.requestHeaders=false
    jmeter.save.saveservice.encoding=false
    jmeter.save.saveservice.bytes=true
    jmeter.save.saveservice.url=true
    jmeter.save.saveservice.filename=false
    jmeter.save.saveservice.hostname=false
    jmeter.save.saveservice.thread_counts=true
    jmeter.save.saveservice.sample_count=false
    jmeter.save.saveservice.idle_time=true

5、最后,重啟一下Jmeter(在CMD命令行中輸入命令:java -jar jenkins.war),讓之前配置的設(shè)置全部生效,這樣,再次執(zhí)行自動(dòng)化腳本,就可以生成兩種類型的測(cè)試報(bào)告了

三、報(bào)告集成 Jenkins的配置
OK,到目前為止,我們已經(jīng)可以成功的生成"概要報(bào)告"和"詳細(xì)報(bào)告"了,那么,怎么讓這兩種報(bào)告在Jenkins上體現(xiàn)出來(lái),我們接下來(lái)繼續(xù)操作
1、要在Jenkins上面查看報(bào)告,我們首先需要在Jenkins上安裝這么一個(gè)插件-------HTML Publisher plugin,插件的安裝方式這里就不再贅述了,在上一篇文章(不需要寫代碼的自動(dòng)化測(cè)試框架(一))中已經(jīng)提到,不清楚的,可以去看看之前的文章
2、進(jìn)入Jenkins,點(diǎn)擊你自己創(chuàng)建的自動(dòng)化測(cè)試工程,選擇Configure(配置)

image.png

找到Post-build Actions項(xiàng),在Add post-build action中選擇Push HTML reports
image.png

最后修改下參數(shù)值,將報(bào)告存放的位置填寫正確
image.png

到這里,所有的配置都已完成,我們?cè)囍鴣?lái)構(gòu)建一下我們的自動(dòng)化工程,構(gòu)建成功后點(diǎn)擊工程左邊目錄的HTML Report查看報(bào)告
image.png

生成的報(bào)告如下所示,包含了"概要報(bào)告"和"詳細(xì)報(bào)告",大功告成
image.png

四、冗余測(cè)試報(bào)告請(qǐng)理
隨著自動(dòng)化測(cè)試的執(zhí)行,越來(lái)越多的測(cè)試報(bào)告生成,會(huì)產(chǎn)生很多測(cè)試?yán)?,磁盤空間占用量越來(lái)越大,這些都不是我們希望看到的,如圖所示
image.png

我們希望能夠每次都看見(jiàn)最新的測(cè)試報(bào)告,在自動(dòng)化構(gòu)建之前,將以往的測(cè)試報(bào)告刪除,那么按照這個(gè)思路,我們來(lái)看具體的操作實(shí)現(xiàn)方式
1、我這邊會(huì)使用python語(yǔ)言來(lái)刪除指定目錄下的所有文件,所以,先將刪除文件的腳本寫好,如下

    import os
    import glob
    path=r'D:\apache-jmeter-5.1.1\report_smoke'#測(cè)試報(bào)告的存放路徑
    def delfile(path):
        filenames=glob.glob(path+r'\*')
        for filename in filenames:
            try:
                os.remove(filename)
            except:
                try:
                    os.rmdir(filename)
                except:
                    defile(filename)
                    os.rmdir(filename)
    delfile(path)

2、進(jìn)入Jenkins首頁(yè)面板,依次點(diǎn)擊Manage Jenkins------->Manage Plugins--------->Avaiable,在搜索框中輸入python,將這個(gè)插件安裝好
3、在Jenkins中點(diǎn)擊你自己創(chuàng)建的自動(dòng)化測(cè)試工程,選擇Configure(配置),在構(gòu)建步驟中增加一個(gè)Execute P ython Script,用來(lái)執(zhí)行步驟1中的腳本(這一步一定要特別注意一點(diǎn):執(zhí)行python腳本刪除測(cè)試報(bào)告必須放在構(gòu)建的第一步,否則后面會(huì)出問(wèn)題,導(dǎo)致構(gòu)建失敗,因?yàn)槲覀兊哪康氖窃跇?gòu)建前刪除測(cè)試報(bào)告,如果放在ant運(yùn)行build文件之后,則后面在Jenkins上面集成報(bào)告就會(huì)因?yàn)檎也坏綀?bào)告而報(bào)錯(cuò))

image.png

這樣設(shè)置完成,點(diǎn)擊保存即可,再次運(yùn)行自動(dòng)化腳本,你會(huì)發(fā)現(xiàn)每次都會(huì)產(chǎn)生最新的測(cè)試報(bào)告
image.png

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容