• LR(三)Vugen中脚本增强-关联


    关联

    header、body在generation log中,所有数据都是按时间的先后,分块排列的。块是以**开头,以$$$$$$结尾的

    方法一

    • 在LR中,视图模式切换到tree模式

    • tree模式下,切换到recording snaphosthttp view模式下。 找到需要设置关联的url、request、response 找到需要关联的值后,在选中的状态下,右键选择create parameter。会自动在左侧自动添加的关联函数,双击关联函数,修改参数引用

      如果左右边界里面有乱码,则建议做如下处理: 第一:按照之前所讲的乱码处理原则,将乱码变为对应的中文即可。 第二:不管乱码的根源,直接删除,删除规则如下: 如果左边界中出现乱码,则将乱码及乱码左侧的所有字符串都删除,只保留乱码右侧的字符串。 如果右边界中出现乱码,则将乱码及乱码右侧的所有字符串都删除,只保留乱码左侧的字符串。

    • 替换:切换到script模式,使用动态的参数来替换脚本中需要关联的数据。 CTRL+H,实现全文替换。

    方法二

    在script模式下,直接在需要关联的请求后面添加函数web_reg_save_param_ex(右键->insert->new step->web_reg_save_param_ex),选择左右边界,设置参数引用,最后替换脚本中需要关联的数据。

    常用函数

    在LR中,常用的关联函数有以下四个:

    • web_reg_save_param 通过字符串查找的方式进行定位查找、获取数据。

    • web_reg_save_param_ex 通过字符串查找的方式进行定位查找、获取数据。

    • web_reg_save_param_regexp 通过正则表达式查找的方式进行定位查找、获取数据。(需要打补丁)

    • web_reg_save_param_xpath 通过xpath表达式查找的方式进行定位查找、获取数据。

    函数名称的规则 在LR中,函数的名称本身就包含大量信息。

    • web 第一个字段往往表示该函数可以在何种类型协议的脚本中使用。

    • reg 该字段表明函数是一个注册型的函数。

      所谓注册型函数要求放在请求之前,是只对其后的第一个请求函数有效的(在请求之后工作)。

    • save_param_ex 一般就表明函数的功能

    web_reg_save_param_ex函数详解

    • 在LR中,左右边界去匹配数据的时候遵循的是最小匹配(非贪婪)原则。 比如说服务器返回:a1ba2ba3ba4b 使用LB=a,RB=b,则默认匹配到的将是:1、2、3、4这样的数据,而不会是1ba2这样的数据。

    • 选择左右边界组合尽量唯一

    • 如果左右边界中出现了字符: " 和 ,则需要对之进行转义操作

    • Offset:偏转、位移,是用来设置相对于左边界的位移量,单位是字符。表示从左边界开始,向右位移N个字符,开始提取数据保存。

    • Length:长度,是用来设置最终保存到参数中的字符串的长度。 通常来说,该选项有值,则右边界失效。不建议和右边界同时使用。

      ·示例:假设服务器响应的字符串是:"welcome to testingedu" 设置LB=welcome、RB=testingedu,则最终存入参数的是:" to "

      如果设置Offset=1,Length=2,则最终存入参数的是:"to"
    • Ordinal:该处可以填写的是正整数N和字符串all,默认值是1

      • 正整数N:则表示将第N次匹配到数据存入参数,默认是将第一次匹配到的数据存入参数。

      • all:则表示将所有匹配到的数据以类似于数组的方式存入参数数组。 效果为:ParamName_1=value1,ParamName_2=value2,......,ParamName_N=valueN,与之同时,会自动生成一个参数叫:ParamName_count=N,用来保存参数的个数

      Ordinal=all时,就意味着我们需要对数据进行随机或者遍历的操作。

      • 随机:在LR中,提供了函数lr_paramarr_random("ParamName")函数来进行处理。使用随机函数的值作为参数代码: lr_save_string(lr_paramarr_random("ParamName"),"finalParamName");

      • 遍历:在LR中,提供了函数lr_paramarr_idx("ParamName",int index)函数来进行处理,遍历代码:

    //变量定义在所有方法之前
    int i,count;
    
    //其他业务请求方法 web_url()....
    
    //获取参数的个数值N,atoi()函数转成String(charToInt)
    count = atoi(lr_eval_string("{ParamName_count}"));     
    //遍历参数数组,循环请求
    for(i=1;i<=count;i++){
      //遍历到的参数值设置为参数
      lr_save_string(lr_paramarr_idx("ParamName",i),"finalParamName");
    //业务请求 web_url()....
        业务请求(...{finalParamName}...);
    
    }
  • 相关阅读:
    9-单表查询
    02-数据库概述
    01-MySql的前戏
    mysql+centos7+主从复制
    Mac下安装ipython与jupyter
    python开发之virtualenv与virtualenvwrapper讲解
    python操作redis
    权限管理具体代码实现
    docker入门
    多用判断&&
  • 原文地址:https://www.cnblogs.com/yjh1995/p/13514835.html
Copyright © 2020-2023  润新知