jmeter的关联使用(具体场景)
jmeter使用过程中发现关联还是很有必要的,我结合我实际的业务给大家分享一下
1.正则表达式,
变量名还是自己定义,变量的值格式,如:aaa(.+?)bbb就是响应结果中真正的变量取值范围,其中aaa是左边界,bbb是右边界,(.+?)是具体值
,"carModelId":就是左边界, ,"就是右边界,1是具体值,我们认为他是变化的,注意一点就是左右边界必须是不变的,如果变的话,这个取值就没有意义了
2.JSON extractor
这种方式多用于关联的变量值是多个的场景,可以层级路径取,举个例子
场景:一个报价接口,一个下单接口,报价中的价格和车型及车型id都是动态变化的,下单时这些变量都会用到,所以需要关联,但由于报价的响应结果中有多高报价的动态变量,所有需要按层级取到特定的key-value
操作步骤:
1.在报价请求中添加JSON extractor,如下图:
2.JSON Extractor页面
a、variable names这个是自己定义的变量名,如果是多个用;隔开
b、JSON Path expressions这个是每个变量的层级取值,每个值之间用;隔开,数量根据变量名个数决定,取值的方法就是把报价接口的响应数据形成JSON格式(第二张图),按照层级取到想要的value,格式:$.data.carPriceInfoList[0].carPrices[0].carModelId,如第三张图
最后在jmeter校验一下这个value是否能取到值,如下图,可以取到值
3.Match no,这个一般用1,或-1表示,0表示随机,1表示第一个,-1表示所有,之间还是用;隔开,数量根据变量名个数决定
4.Default value,这个随便写个值就行,之间还是用;隔开,数量根据变量名个数决定
二、值得应用
通过上面两种方式取到动态变化的值,怎么应用呢,尤其对于一个值是由多个变化的值组成的,如:下单,下单的钱是由车型报价的钱+增值服务组成,但是这种情况使用正则表达式取到的值不一定取得准确,所以我推荐使用JSONExtractor取到的值叠加到一起就可以了
操作步骤:
1.首先拿到每个变量名
2.然后通过函数助手,将每个变量名通过sum函数加到一起
通过选项菜单-函数助手对话框
3拿到函数助手生成的字符串去取代用到 此变量的value值就可以了