【转】jmeter关联的经典应用, 如何将页面返回值作为下次请求的参数


声明:转发自 https://www.cnblogs.com/scarlett-hy/articles/4244055.html

【解决问题:响应报文返回多个key值,需要将所有key值的value取出,并且,循环用于下一个请求】

先介绍一下这次要   在第一个"正则表达式提取器-获取asnid"中, 这个正则的提取还是比较典型的.     引用名称: 说明了 在一下脚本中所引用的名称     正则表达式: ()中是你需要提取的信息 . 页面返回的信息是[123] 所有正则写成\[(\d+?)\] 因为[]是元字符所有需要\反义一下 , jmeter的正则引擎直接是用perl的语法 所有\d就是表示的数字 +表示匹配1个和多个 ?表示非贪婪匹配 . 当然这里的正则也可以写成[(.*?)\]这个意思就是获取()中的所有东西     模板 : $$中的数字表示给匹配的信息加上组号以便后续可以调用, 这里对模板的用法不是很明显, 下面的正则可以很明显看到模板多组号的用途     匹配数字 : 一个正整数代表需要匹配几次 0代表随机匹配  -1代表全部匹配. 这里就写1只要成功匹配一次就可以了     稍微复杂一点的正则请看下图 选中的这个http请求 在返回的页面中有这么几行 TX12312 TX12314 TX12315 .... 这些代表了订单号下的不同条码,而页面上就需要将这些条码一个一个输入进,条码输入框 对于这个页面的 "匹配数字" 我们就需要设置成-1,意思就是将页面中所有匹配的信息抓取下来, 正则(TM.*?), 匹配下来后全部存进自定义的列表名barcode_arr 这样的抓取通常会跟着循环控制的使用, 接着就看下图   循环控制器 这个不难理解 输入变量前缀: 就是先前抓取的barcode_arr这个列表名 start index for loop : 列表的哪个下标开始 end index for loop : 在哪个下标结束 输出变量名 : 循环到的每个元素存入哪个变量 我这里遍历整个barcode_arr,遍历到的每个元素存进barcode 以供后面的测试元件调用 . 接着在看下图     多次匹配后以不同的组号区分 我的理解就是: 正则中出现了3个括号() , 我需要分别提取3个括号中的所有东西 那就需要在模板中定义三个组号$1$$2$$3$ , 在匹配数字中配置-1 当后面页面调用这次匹配的内容时就可以这样区别 ${return_1_g1}第一组中的第一个内容 ${return_1_g2}第二组中的第一个内容 ${return_2_g1}第一组中的第二个内容 ${return_2_g2}第二组中的第二个内容   总结: jmeter的关联我的理解和实例就是这些. 知道如何识别页面的信息在对于我们更好完成性能测试自动化测试,会有很大的帮助和提高 不是吗!哈哈