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文件。

  • 相关阅读:
    令Django 视图有默认 login_required
    sql语句 case
    java进制转换
    倒水问题
    全排列
    数据库范式
    操作系统——磁盘设备管理
    Windows系统安装MySQL
    Java题库——Chapter16 JavaFX UI组件和多媒体
    Java题库——Chapter15 事件驱动编程和动画
  • 原文地址:https://www.cnblogs.com/mpp0905/p/11340689.html
Copyright © 2011-2022 走看看