zoukankan      html  css  js  c++  java
  • 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文件。

  • 相关阅读:
    LeetCode 227. Basic Calculator II
    LeetCode 224. Basic Calculator
    LeetCode 103. Binary Tree Zigzag Level Order Traversal
    LeetCode 102. Binary Tree Level Order Traversal
    LeetCode 106. Construct Binary Tree from Inorder and Postorder Traversal
    LeetCode 105. Construct Binary Tree from Preorder and Inorder Traversal
    LeetCode 169. Majority Element
    LeetCode 145. Binary Tree Postorder Traversal
    LeetCode 94. Binary Tree Inorder Traversal
    LeetCode 144. Binary Tree Preorder Traversal
  • 原文地址:https://www.cnblogs.com/mpp0905/p/11340689.html
Copyright © 2011-2022 走看看