软件测试最新JMeter+Allure,做出美观的测试报告_jmeter报告模板(2),软件测试知识体系大纲

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

[内部资源] 想拿年薪30W+的软件测试人员,这份资料必须领取~

Python自动化测试全栈+性能测试全栈,挑战年薪40W+

在平时用JMeter做测试时,生成报告的模板,不是特别好,大家应该也知道Allure报告,页面美观。

先来看效果图,报告首页,如下所示:

报告详情信息,如下所示:

运行run.py文件,运行成功,如下所示:

接下来来看下实现过程。

安装Allure

Allure是开源的,直接到github上下载即可。就不细说了。

需要注意的是,环境变量的配置,Allure的bin路径,需要配置到环境变量path中。

JMeter配置

找到bin目录下的 jmeter.properties 配置文件,将如下所示对应配置取消注释,jmeter.save.saveservice.output_format 修改为xml。

# This section helps determine how result data will be saved.
# The commented out values are the defaults.

# legitimate values: xml, csv, db.  Only xml and csv are currently supported.
jmeter.save.saveservice.output_format=xml

# The below properties are true when field should be saved; false otherwise
#
# assertion_results_failure_message only affects CSV output
#jmeter.save.saveservice.assertion_results_failure_message=true
#
# legitimate values: none, first, all
#jmeter.save.saveservice.assertion_results=none
#
jmeter.save.saveservice.data_type=true
jmeter.save.saveservice.label=true
jmeter.save.saveservice.response_code=true
# response_data is not currently supported for CSV output
jmeter.save.saveservice.response_data=true
# Save ResponseData for failed samples
jmeter.save.saveservice.response_data.on_error=true
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
# Only available with HttpClient4
jmeter.save.saveservice.connect_time=true
jmeter.save.saveservice.samplerData=true
jmeter.save.saveservice.responseHeaders=true
jmeter.save.saveservice.requestHeaders=true
jmeter.save.saveservice.encoding=true
jmeter.save.saveservice.bytes=true
# Only available with HttpClient4
jmeter.save.saveservice.sent_bytes=true
jmeter.save.saveservice.url=true
jmeter.save.saveservice.filename=true
jmeter.save.saveservice.hostname=true
jmeter.save.saveservice.thread_counts=true
jmeter.save.saveservice.sample_count=true
jmeter.save.saveservice.idle_time=true

# Timestamp format - this only affects CSV output files
# legitimate values: none, ms, or a format suitable for SimpleDateFormat
jmeter.save.saveservice.timestamp_format=ms
jmeter.save.saveservice.timestamp_format=yyyy/MM/dd HH:mm:ss.SSS

生成JMeter结果文件

使用命令 jmeter -n -t C:\Users\Desktop\auth.jmx -l C:\Users\Desktop\result.xml 即可生成xml文件。

安装依赖包

按项目中的requirements.txt 文件,安装对应的依赖包即可。

文件解析生成Allure报告

文件解析

xml文件内容如下:

从上述的内容,我们可以分析得出如下内容:

  • t 从请求开始到响应结束的时间
  • ts 表示访问的时刻: dates 运行的结果
  • lb 表示标题
  • rc 返回的响应码rm 响应信息
  • tn 线程的名字
  • assertionResult:断言信息
  • responseData/samplerData:返回数据
  • queryString: 请求信息

代码实现

利用生成的结果文件生成pytest的参数化数据:


    try:
        converte_data = xmltodict.parse(result_file, encoding='utf-8')
        sample_keys = list(converte_data['testResults'].keys())
        result = []
        ws_result = []
        sample_result = converte_data['testResults']['httpSample'] if isinstance(
            converte_data['testResults']['httpSample'],
            list) else [converte_data['testResults']['httpSample']]
        if 'sample' in sample_keys:
            ws_result = converte_data['testResults']['sample'] if isinstance(converte_data['testResults']['sample'],
                                                                             list) else [
                converte_data['testResults']['sample']]
        result_data = sample_result + ws_result
        for data in result_data:
            time = data['@t'] if '@t' in data else ''
            date = data['@ts'] if '@ts' in data else ''
            status = data['@s'] if '@s' in data else ''
            title = data['@lb'] if '@lb' in data else ''
            status_code = data['@rc'] if '@rc' in data else ''
            status_message = data['@rm'] if '@rm' in data else ''
            thread = data['@tn'] if '@tn' in data else ''
            assertion = data['assertionResult'] if 'assertionResult' in data else ''
            response_data = data['responseData']['#text'] if 'responseData' in data and '#text' in data['responseData'] \
                else ''
            sampler_data = data['samplerData']['#text'] if 'samplerData' in data and '#text' in data['samplerData'] \
                else ''
            request_data = data['queryString']['#text'] if 'queryString' in data and '#text' in data[
                'queryString'] else ''
            request_header = data['requestHeader']['#text'] if 'requestHeader' in data and '#text' in data[
                'requestHeader'] else ''
            request_url = data['java.net.URL'] if 'java.net.URL' in data else ''
            story = '未标记'
            assertion_name, assertion_result = None, None
            if status == 'false':
                assertion_name, assertion_result = get_assertion(assertion)

            meta_data = (
                time, date, status, story, title, status_code, status_message, thread, assertion_name, assertion_result,
                response_data
                , sampler_data, request_data, request_header, request_url)
            result.append(meta_data)
        return result
    except Exception as e:
        print(e)


![img](https://img-blog.csdnimg.cn/img_convert/6e00dbaf68b76a023bcb86e6394a0918.png)
![img](https://img-blog.csdnimg.cn/img_convert/dd8288b7924332f525978d57faa8e309.png)
![img](https://img-blog.csdnimg.cn/img_convert/5bda0fa3af9e32b5bb7e9007fe3828f9.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值