zoukankan      html  css  js  c++  java
  • 【转】jmeter关联的经典应用, 如何将页面返回值作为下次请求的参数

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

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

    先介绍一下这次要测试的业务吧,在测试的这个页面中

    首先要输入一个"订单号"
    按下回车后将会带出一组商品的"条码编号"
    然后通过将这些"条码编号"复制到下面的条形码输入框中,按下回车,页面会再带出关于这个条码的一些信息,点击"核收"按钮,接着再输入下一个条码...直到该订单的所有条码全部完成, 点击完成订单.
    这个订单的流程就算完成了
     
    如果看明白上面的文字叙述,你因该已经明白如何对这个功能的页面做测试了...不管是性能还是自动化, 
     
    测试脚本的结构如下:
    参数化所有订单
    然后从页面返回值读取订单返回的条形码, 并将结果存入结果集中
    循环该结果集 ,请求所有条码 ,循环次数去结果集的总数
    完成订单流程
     
    先看下图
     
    在第一个"正则表达式提取器-获取asnid"中, 这个正则的提取还是比较典型的.
        引用名称: 说明了 在一下脚本中所引用的名称
        正则表达式: ()中是你需要提取的信息 . 页面返回的信息是[123] 所有正则写成[(d+?)] 因为[]是元字符所有需要反义一下 , jmeter的正则引擎直接是用perl的语法 所有d就是表示的数字 +表示匹配1个和多个 ?表示非贪婪匹配 . 当然这里的正则也可以写成[(.*?)]这个意思就是获取()中的所有东西
        模板 : $$中的数字表示给匹配的信息加上组号以便后续可以调用, 这里对模板的用法不是很明显, 下面的正则可以很明显看到模板多组号的用途
        匹配数字 : 一个正整数代表需要匹配几次 0代表随机匹配  -1代表全部匹配. 这里就写1只要成功匹配一次就可以了
     
     
    稍微复杂一点的正则请看下图
    选中的这个http请求 在返回的页面中有这么几行
    <td>TX12312</td>
    <td>TX12314</td>
    <td>TX12315</td>
    ....
    这些代表了订单号下的不同条码,而页面上就需要将这些条码一个一个输入进,条码输入框
    对于这个页面的 "匹配数字" 我们就需要设置成-1,意思就是将页面中所有匹配的信息抓取下来, 正则<td>(TM.*?)</td>, 匹配下来后全部存进自定义的列表名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的关联我的理解和实例就是这些. 知道如何识别页面的信息在对于我们更好完成性能测试自动化测试,会有很大的帮助和提高 不是吗!哈哈
  • 相关阅读:
    面向对象-------------------------------面向对象的零散小知识
    面向对象------------------------------反射(面向对象的又一个思路)
    面向对象-------------------------对象和类的属性
    面向对象------------------一些双下方法
    装饰器搞一下
    字符串切片取值规则
    On The Way—Step 2 Python入门之Python内容初始
    socket对于recv函数的理解
    Socket通信原理学习
    [SUCTF 2019]Pythonginx
  • 原文地址:https://www.cnblogs.com/2019damojie/p/11076826.html
Copyright © 2011-2022 走看看