zoukankan      html  css  js  c++  java
  • JMeter 关联

    在测试过程中,某些操作步骤与其相邻步骤存在一定的依赖关系,导致某个步骤的输入数据来源于上一步的返回数据,这时就需要“关联”来建立步骤之间的联系。从前面接口的响应结果中提取数据,作为下一个接口的请求参数。

    Regular Expression Extractor(正则表达式提取器)

    从服务器的响应中通过使用perl的正则表达式提取值。该元素会作用在指定范围取样器,用正则表达式提取所需值,生成模板字符串,并将结果存储到给定的变量名中。

    Apply to(作用范围)

    1)Main sample and sub-samples:作用于父节点的取样器及对应子节点的取样器

    2)Main sample only:仅作用于父节点的取样器

    3)Sub-samples only:仅作用于子节点的取样器

    4)JMeter Variable:作用于JMeter变量(输入框内可输入JMeter的变量名称)。

    Field to check(要检查的响应字段)

    1)主体:响应报文的主体

    2)Body(unescaped):主体,响应的主体内容且替换了所有的html转义符,注意html转义符处理时不考虑上下文,因此可能有不正确的转换,不太建议使用。

    3)Body as a Document:从不同类型的文件中提取文本,注意这个选项比较影响性能。

    4)Response Headers:响应信息头

    5)Request Headers:请求信息头

    6)URL:统一资源定位符,即Internet上用来描述信息资源的字符串。

    7)响应代码:响应状态码,例如200、404、500等。

    8)响应信息:响应信息

    Name of created variable(引用名称):提取结果存储到JMeter变量的名称。

    Expression Extractor(正则表达式):使用正则表达式解析响应结果,“()” 表示要提取的数据。

    Template(模板):$0$代表全部结果,$1$代表第1个“()” 提取的数据,$1$$2$代表拼接第1个“()”和第2个“()”提取的数据,$3$,$4$代表用一个逗号连接第3个“()”和第4个“()”提取的数据。

    Match No.(匹配数字):-1代表全部,0代表随机,1代表第一个(为-1时,要用variable_1、variable_2。。引用)。

    Default Value(缺省值):如果没有匹配到任何值,该变量的默认值。

     

     

    JSON Extractor(JSON提取器)

    从接口响应返回的json中提取内容,作为变量在不同的请求中引用。

    JSON Path  expressions:调试通过的json path表达式。

    Match No.(匹配数字):-1代表全部,0代表随机,1代表第一个。

    Compute concatenation var(suffix_ALL):是否统计所有,即将匹配到的所有值保存,名为“变量名_ALL”。

     

     

    XPath Extractor(XPath提取器)

    XPath 是一门在 XML 文档中查找信息的语言,XPath 可用来在 XML 文档中对元素和属性进行遍历。

    XML Parsing Options(要解析的XML参数)

    1)Use Tidy:当需要处理的页面是HTML格式时,必须选中该选项;如果是XML或XHTML格式(例如RSS返回),则取消选中(Quiet:只显示需要的HTML页面,Report errors:显示响应报错,Show warnings:显示警告)。

    2)Use Namespaces:如果启用该选项,后续的XML解析器将使用命名空间来分辨。

    3)Validate XML:根据页面元素模式进行检查解析

    4)Ignore Whitespace:忽略空白内容

    5)Fetch external DTDs:如果选中该项,外部将使用DTD规则来获取页面内容。

    Return entire XPath fragment of  text content:返回文本内容的整个XPath片段

    一次性提取多个字段 

    一次性取出第一个位置的id、title、imgUrl字段

     在其他元件中可以通过 ${id}、${title}、${imgUrl} 引用

     

    提取最后一个id(id个数不确定)

    方法一:使用嵌套函数

    1)通过正则表达式提取器或JSON提取器,提取所有id

    2)通过 ${__V(id_${id_matchNr})} 引用

    方法二:使用BellShell 后置处理器

    1)通过正则表达式提取器或JSON提取器,提取所有id

    2)添加BeanShell 后置处理器

    String str = vars.get("id_matchNr");
    String var = "id_"+str;
    String value = vars.get(var);
    vars.put("id_last",value);

    3)通过 ${id_last} 引用

    提取最大的level并加1(返回结果未按level排序)

    1)使用提取器提取所有的 level

    2)使用BeanShell后置处理器找到最大的level,再level+1

    String num = vars.get("level_matchNr");
    int n = Integer.parseInt(num);
    String str,value;
    String max = vars.get("level_1");
    
    for(i = 2;i <= n;i++){
        str = "level_"+i;
        value = vars.get(str);
        if(max < value){
            max = value;
        }
    }
    int level = Integer.parseInt(max);
    level = level+1;
    vars.put("level_new",Integer.toString(level));

    提取name对应的id

    方法一:使用正则表达式提取器

    方法二:使用BellShell 后置处理器

    1)使用提取器提取所有的id、name

    2)使用BeanShell后置处理器遍历name,找出符合条件name对应的id

    String num = vars.get("id_matchNr");
    int n = Integer.parseInt(num);
    String str,id,name,value;
    
    for(int i = 1;i <= n;i++){
        str = "name_" + i.toString();
        name = vars.get(str);
        if(name == "test01"){
            id = "id_" + i.toString();
            value = vars.get(id);
            vars.put("id_select",value);
            break;
        }
    }
  • 相关阅读:
    vb代码控制 Excel锁定单元格
    SendMessage
    vb 中Treeview控件的一些问题!
    NGWS runtime C# 开始学习 第一天 (2006.6.7)
    DTS Transform Data Task的使用
    GetTickCount
    ASP.NET 2.0 中Login控件的使用
    core dump解析(2)
    tcp滑动窗口机制
    linux 查看文件夹大小 du命令
  • 原文地址:https://www.cnblogs.com/scholars-xian/p/11697422.html
Copyright © 2011-2022 走看看