加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

JMeter的JavaRequest探究

发布时间:2020-12-15 08:01:32 所属栏目:Java 来源:网络整理
导读:1.背景 最近笔者的一位老朋友咨询了一个问题:在自定义的Java请求中如何编写多个请求?老朋友反应他们发送请求只能基于这种Java请求形式(代码调需用三方封装的jar包)。这个问题恰巧不久前在笔者所在的 飞测QQ群 中有人咨询过,当时只回答了用SubResult. 2.

1.背景

最近笔者的一位老朋友咨询了一个问题:在自定义的Java请求中如何编写多个请求?老朋友反应他们发送请求只能基于这种Java请求形式(代码调需用三方封装的jar包)。这个问题恰巧不久前在笔者所在的飞测QQ群中有人咨询过,当时只回答了用SubResult.

2.目的

本次的目的就是深挖下:JMeter的JavaRequest请求如何编写过个SamplerResult。

3.实战

笔者在之前已经多次写过Java请求脚本,本次如何搭建脚本编写环境就及Java请求中有哪些约定好结构本文不赘述,大家自行百度下。其实主要还是讲思路,包括以后笔者写文章大都主要是讲解决问题的思路。

  • 碰到这个问题,我第一时间想到的是用SubResult(因为笔者长期研究JMeter底层源码)

然后就开始撸代码:

恩,感觉很完美!然而在执行后:

从上图看出,抛出了sampleEnd called twice 异常,笔者将代码做了微调:

恩,感觉应该没问题了,再次执行下:

我擦,咋又报错了。。。这次报了setEndTime must be called after setStartTime ,笔者于是看了JMeter底层代码,看看哪里抛出的这个异常。如下图:

恩? startTime值为零才会抛出这个异常,感觉越来越有意思了。带着这个疑问笔者去查看了JMeter的API文档,这才发现导致此现象的真凶。

当回翻译官:

addRawSubResult(SampleResult subResult) 向集合中添加子结果,而不更新任何父字段。
addSubResult(SampleResult subResult) 添加子结果并调整父字节计数和结束时间。
addSubResult(SampleResult subResult,boolean renameSubResults) 添加子结果并调整父字节计数和结束时间。

我们代码中用的是addSubResult(SampleResult subResult,boolean renameSubResults),笔者又调整了代码:

执行结果:

ok,执行成功(出现Log4j2异常是因为笔者没有配置log4j2.xml,不要在意这个细节),但总感觉还是缺点什么?为了更真实笔者有微改了下代码:

OKay,打包到JMeter运行如下:

笔者在看聚合报告时,又遇到问题了。。。

恩?只显示父请求聚合数据,咋不显示子请求数据呢?笔者目前发现解决办法是:执行的时候先保存JTL结果见文件,场景结束后再次用聚合报告打开此JTL结果文件。

okay,最终问题解决。。。如果大家发现更好的解决方式,请不吝赐教!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读