• Jmter中的断言


    before

    win 10 + jmeter 5.2.1

    本篇来学习在JMeter中常用断言:

    • 响应断言
    • 大小断言
    • json断言
    • beanshell断言

    来看看都是怎么用的。

    响应断言

    http://www.neeo.cc:6001/get?stock=10   # get
    

    来,新建一个线程组,添加两个"HTTP请求"取样器,配置如下,其实两个配置一样的........

    来看如何添加响应断言:

    重要的参数说明:

    • Apply to,保持默认吧
    • Field to Test,断言的内容来自于:
      • Test Response响应体
      • Response Code响应状态码
      • Response Message响应信息
      • Response Headers响应头
      • Request Headers请求头
      • Request Data请求体
      • URL Sampled请求的URL
    • Patterns Matching Rules,断言(匹配)规则:
      • Container:响应文本中是否包含某个字段值,支持正则
      • Matches:响应文本是否完全匹配预期值,支持正则
      • Equals:响应文本是否完全匹配预期值,不支持正则
      • Substring:响应文本中是否包含某个字段值,不支持正则
    • Patterns to Test,编写你的断言
    • Custom failure message,自定义的断言失败信息

    你可以根据具体的场景来写的断言。

    这里我们为第一个请求添加断言,配置如下:

    上面两个断言结果,一个成功,一个失败。

    再来看第二个请求的断言配置:

    最终的"察看结果树"的执行结果:

    大小断言

    http://www.neeo.cc:6001/get?stock=10   # get
    

    来看"HTTP请求"配置和执行结果:

    我们从"察看结果树"中得到2个数据,接下来使用大小断言来进行判断:

    来看两个"大小断言"的配置:

    "大小断言"的各个参数读起来一点不难,我也不用再说了,大家一看就懂;断言结果肯定都通过,我也不贴图了!

    json断言

    如果响应体是json类型的话,断言使用"json断言"比"响应断言"更方便。

    http://www.neeo.cc:6001/get?stock=10   # get
    
    # 响应结果
    {
      "args": {
        "stock": "10"
      }, 
      "headers": {
        "Connection": "keep-alive", 
        "Host": "www.neeo.cc:6001", 
        "User-Agent": "Apache-HttpClient/4.5.10 (Java/1.8.0_201)"
      }, 
      "origin": "222.35.243.75", 
      "url": "http://www.neeo.cc:6001/get?stock=10"
    }
    

    "json断言"内部对json路径及值的判断,可以参考json-path/JsonPath,一路点下去就行了,这里不存在同级路径下key重复的问题。

    在线程组内添加"HTTP请求",配置和结果如下:

    再来看如何添加"json断言":

    看看怎么配置:

    json断言相当的简单,就是判单之指定的路径下是否存在指定的key,顶多给同时判断key对应的value是否等于某个值。

    beanshell断言

    在beanshell中有个内置变量Failure boolean(false表示断言成功,true表示断言失败)变量,用来控制断言,断言失败使用FailureMessage显示失败日志。

    来个需求,如下接口:

    /pinter/com/getSku   # get请求  参数:id=1
    
    # 返回
    {"code":"0","message":"success","data":{"skuId":523,"skuName":"ptest-523","price":"912","stock":649,"brand":"testfan"}}
    

    判断,如果返回的stock值大于等于500断言成功,否则失败。

    新建一个线程组,并设置1个线程循环3次,添加一个HTTP取样器,然后配置后置json提取器,提取stock值:

    现在,是时候来个beanshell断言了啊:

    上代码:

    prev.setDataEncoding("utf-8");  // 如果响应乱码,就添加这一行
    // 获取json提取器中提取的stock值
    String mystock = vars.get("stock");
    // 转下类型
    int intstock = Integer.parseInt(mystock);
    // beanshell断言
    if (intstock >= 500){
    	Failure = false;  // 断言成功
    }else{
    	Failure = true;  // 断言失败
        // 自定义断言信息
    	FailureMessage = "断言失败,stock值是: "+mystock;
    };
    

    配置和结果如下:

    beanshell断言就这么简单!

  • 相关阅读:
    文件复制
    linux 计划任务
    mysql查询权限的用户名密码
    mysql导入导出及复制
    windowslucene安装配置
    apache+php32位平台安装
    文件移动
    mysql查询权限的用户名密码
    取树状结构的某个值下的所有记录
    今天发生了个有趣的排序
  • 原文地址:https://www.cnblogs.com/TodayWind/p/16275449.html
Copyright © 2020-2023  润新知