玩转Jmeter之jmeter元器件断言4

Jmeter常见的断言:

<1>. 使用响应断言 -- 可以满足大多数的需求

  匹配范围:

    Main sample and sub-samples:匹配范围为当前父取样器,及子取样器

    Main sample only :仅当前父取样器(默认)

    Sub samples only:仅子取样器
    JMeter Variable:变量值进行匹配

  匹配对象:

    (1)响应文本:响应服务器返回的文本内容,http协议排除header部分
    (2)响应代码:匹配响应代码,比如http请求中‘200’代表成功
    (3)响应信息:匹配响应信息,处理成功返回‘成功’或者“ok”字样
    (4)响应头:匹配响应头中的信息
    (5)URL样本:匹配URL链接中的内容
    忽略状态: 如果勾选,不会强制检查响应状态码,直接断言内容

  匹配规则:
    包括:响应内容包括需要匹配的内容就算成功。可以写正则表达式
    匹配:响应内容要完全匹配内容,不区分大小写
    equals:完全相等,区分大小写
    substring:响应内容包括匹配内容即为成功,区分大小写
    否:匹配规则取反
    或者:如果一次检查多项内容,勾选后除非全部失败,否则即为断言通过。

  测试模式:预期结果

<2>.*持续时间断言:

  判断是否在给定的时间内返回响应结果,有的接口响应可能比较慢,需要设置下断言持续时间

<3>.JSON断言:

  Assert JSON Path Exist:json path表达式
  Additionally assert value:文本验证,此处是完全匹配
  Match as regular expression:支持正则表达式匹配。如果勾选,预期结果可以是正则表达式:比如 [0-9]{8}
  Expected value:预期结果值
  Expect null:判定返回为null
  Invert assertion:倒置断言结果--上面的条件满足,反而是失败

  判断方式:
    如果响应结果不是json格式的,fail
    如果json path找不到元素,fail
    如果json path找到元素,没有设置条件,pass
    如果json path找到元素了,不符合条件,fail
    如果json path找到元素,且符合条件,pass
    如果json path返回的是一个数组,迭代判断是否有元素符合条件,有则pass,无则fail

<4>.Xapth断言:

  验证 html或xml响应中是否包含 xpath表达式的节点

  Use Tidy:当需要处理的页面是HTML格式时,必须选中该选项;如果是XML或XHTML格式,则取消选中

<5>. 自由断言: BeanShell 断言

  (1). Bean Shell常用内置变量
      JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下:
    log:写入信息到jmeber.log文件,使用方法:log.info(“This is log info!”);
    Ctx:该变量引用了当前线程的上下文,使用方法可参考:org.apache.jmeter.threads.JMeterContext。
    ResponseCode:响应状态码
    ResponseMessage:响应信息
    Vars - (JMeterVariables):操作jmeter变量
    这个变量实际引用了JMeter线程中的局部变量容器(本质上是Map),它是测试用例与BeanShell交互的桥梁,常用方法:
      a) vars.get(String key):从jmeter中获得变量值
      b) vars.put(String key,String value):数据存到jmeter变量中

    Props :操作jmeter属性,该变量引用了JMeter的配置信息,可以获取Jmeter的属性,它的使用方法与vars类似,但只能put进去String类型的值
      a) props.get("START.HMS");
      b) props.put("PROP1","1234");

    Prev - (SampleResult):获取前面的sample返回的信息,常用方法:
      a) getResponseDataAsString():获取响应信息
      b) getResponseCode() :获取响应code

  (2). 除了可以使用beanshell的内置变量外,主要通过 Failure 和 FailureMessage来设置断言结果

    示例:
      if ("200".equals(""+ResponseCode) == false)
      {
        // 响应码不等于200时,设置断言失败,并输出失败信息
        Failure=true ;
        FailureMessage ="响应状态码非200,是 " + ResponseCode + "." ;
        print ( "the return code is " + ResponseCode);
        log.info( "the return code is " + ResponseCode);
      } else {
        // 响应码等于200时,设置断言成功,并输出成功信息
        Failure=false;
        FailureMessage = "响应状态码正确" + ResponseCode;
        }
  (3). 直接使用${name},引用系统变量

总结:jmeter断言可以使用多个,其中响应断言可以添加多个,json断言只针对请求响应内容是json才使用,如果请求返回的是html或者xml,

则需要添加xpath断言

posted @ 2022-05-21 16:25  maxwell11  阅读(79)  评论(0编辑  收藏  举报