jtl文件解析(jmeter+jenkins+python實現接口自動化)


網上搜索出jmeter壓測結果解析成html文件的博客分享很多,但是並不能達到我自己的測試預期,因此采用Python解析jtl文件,解析結果直接展示用例通過和失敗的數目,以及失敗的用例標題,如下圖所示:

搭建步驟:

1. 安裝tomcat

2. 安裝jenkinsb並進行配置

其他:使用Python解析jtl文件

一、 安裝tomcat

1.1 下載tomcat安裝包

1.2 拷貝文件到Library目錄下並解壓,解壓命令:tar -xzvf xxxxxxxx.tar.gz

1.3 進入解壓后的目錄/bin

1.4 啟動服務,啟動命令:star.sh

1.5 使用瀏覽器輸入localhost+端口號,檢查是否啟動成功,啟動成功如下圖

如果沒有啟動成功,可以去logs下查看啟動日志,查找失敗原因

安裝步驟粗略描述,詳細步驟需要的話可以自己百度

二、安裝jenkins

2.1 進入jenkins官網下載war包

2.2 把war包放入tomcat的webapps目錄下,重啟tomcat

2.3 在瀏覽器輸入localhost:8080/jenkins就可以訪問jenkins了

這里粗略記錄了jenkins的安裝,具體怎么配置可自行百度

三、Python解析jtl文件

#把jmeter執行結果jtl文件中的所有httpSample存放到一個list中
def getAllCase(file):
    caselist = []
    f = open(file,encoding='utf-8')
    for line in f.readlines():
        if line.startswith('<httpSample'):
            line = line[12:-2]
            caselist.append(line)
    # print(caselist)
    return caselist

#處理allcase,取出s,lb和rc作為字典存到list中
def caselDicList(caselist):
    casediclist = []    #每條case是一個字典,把所有case存放到list里面
    # print(caselist)
    for case in caselist:
        # print(case)     #一條case,包含sample中的所有
        casedic={}
        case_list = case.split(" ")
        for i in case_list:
            if i.__contains__("="):
                key = i.split("=")[0]
                casedic[key] = i.split("=")[1]
        casediclist.append(endCase(casedic))
    # print(casediclist)
    return casediclist



#把casedic做處理,只保留s,lb,rc
def endCase(casedic):
    case_pre = casedic
    case_aft = {}
    for i in case_pre:
        if i == "s" or i == "lb" or i == "rc":
            case_aft[i] = case_pre.get(i)
    return case_aft




#分析結果
def result(casediclist):
    pass_nums = 0
    fail_nums = 0
    fail_casediclist = []
    for casedic in casediclist:
        if casedic.get("s").__contains__('true'):
            pass_nums = pass_nums+1
        else:
            fail_nums = fail_nums+1
            print("失敗的用例標題為:"+casedic.get("lb"))
            fail_casediclist.append(casedic)
    print("通過的用例數為:"+str(pass_nums))
    print("失敗的用例數為:"+str(fail_nums))




caselist = getAllCase('mpp.jtl')  #這里傳入的是jtl的絕對路徑
casediclist = caselDicList(caselist)
result(casediclist)

四、配置jenkins

4.1 新建一個自有項目的job

4.2 設置定定時運行,參考定時構建語法

定時器構建語法

* * * * *
星號中間用空格隔開

  • 第一個*表示分鍾,取值0~59
  • 第二個*表示小時,取值0~23
  • 第三個*表示一個月的第幾天,取值1~31
  • 第四個*表示第幾月,取值1~12
  • 第五個*表示一周中的第幾天,取值0~7,其中0和7代表的都是周日

用法舉例:

  • 每30分鍾構建一次:H代表形參
    H/30 * * * *
  • 每2個小時構建一次:
    H H/2 * * *
  • 每天的8點,12點,22點,一天構建3次: (多個時間點中間用逗號隔開)
    0 8,12,22 * * *
  • 每天早上8點到晚上6點每三小時檢查一次
    H 8-18/3 * * *

4.3 執行shell腳本

分兩步執行

第一步執行jmeter: jmeter -n -t  xxxxx.jmx -l  xxxxxxx.jtl

第二步執行Python解析jtl:python xxxx.py

保存后,手動觸發構建出現第一張圖片的結果

其中py文件就是步驟三種的代碼,解析jtl文件使用

!!!!補充!!!!

jmeter解壓后默認運行的不是xml格式的jtl文件,所以需要修改配置,配置文件在bin目錄下:jmeter.properties

這樣執行后的jtl文件內容是xml格式的,自己寫的py只能解析xml格式的jtl文件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM