• 脚本结构

    上图中,queryMaterialApiDTOListByPkIds是返回Json格式响应结果的请求,然后添加BeanShell断言详细判断Json结果中的值是否正确。

  • Json格式的相应结果

     {
         "code": 0,
         "msg": "success",
         "success": true,
         "data": [
             {
                 "materialCode": "6902265111719",
                 "materialName": "海天蒸鱼豉油450ml*12",
                 "materialType": 1,
                 "sixNineCode": "6902265111719",
                 "expirationDate": 720,
                 "packingSpecification": 12,
                 "basicUnit": "BOX",
                 "minSaleUnit": "BOT",
                 "importFlag": 1,
                 "transportFlag": 0,
                 "sourceSystem": 10,
                 "createrName": "MD自动转换物料",
                 "updaterName": "loms",
                 "pkId": "6902265111719",
                 "mdMaterialCode": "6902265111719",
                 "verifyStatus": 2,
                 "creater": -2,
                 "createTime": 1538984955619,
                 "updater": -2,
                 "updateTime": 1538984955619,
                 "useStatus": 1
             },
             {
                 "materialCode": "6902265113003",
                 "materialName": "海天特辣黄豆酱230g*15",
                 "materialType": 1,
                 "sixNineCode": "6902265113003",
                 "expirationDate": 720,
                 "packingSpecification": 15,
                 "basicUnit": "BOX",
                 "minSaleUnit": "BOT",
                 "importFlag": 1,
                 "transportFlag": 0,
                 "sourceSystem": 10,
                 "createrName": "MD自动转换物料",
                 "updaterName": "loms",
                 "pkId": "6902265113003",
                 "mdMaterialCode": "6902265113003",
                 "verifyStatus": 2,
                 "creater": -2,
                 "createTime": 1538984956726,
                 "updater": -2,
                 "updateTime": 1538984956726,
                 "useStatus": 1
             }
         ],
         "EnumVal": {}
     }
  • BeanShell脚本

     import org.json.JSONObject;
     import org.json.JSONArray;
    
     String result = prev.getResponseDataAsString();
    
     JSONObject response = new JSONObject(result);
     JSONArray array = response.getJSONArray("data");
    
     if (array.length() != 2) {
       Failure=true ;
       FailureMessage ="array size < 2";
       return;
     }
    
     int count = 0;
     for (int i = 0; i < 2; i++) {
       JSONObject temp = array.getJSONObject(i);
       String pkId = temp.get("pkId").toString();
       if (pkId.equals("6902265111719")) {
    
           if (!temp.get("materialCode").equals("6902265111719")) {
               Failure=true ;
               FailureMessage ="pkId: " + pkId + ", material code error, code = " + temp.get("materialCode");
               return;
           }
    
           if (!temp.get("materialName").equals("海天蒸鱼豉油450ml*12")) {
               Failure=true ;
               FailureMessage ="pkId: " + pkId + ", material name error, name = " + temp.get("materialName");
               return;
           }
           count++;
       }
    
       if (pkId.equals("6902265113003")) {
           if (!temp.get("materialCode").equals("6902265113003")) {
               Failure=true ;
               FailureMessage ="pkId: " + pkId + ", material code error, code = " + temp.get("materialCode");
               return;
           }
    
           if (!temp.get("materialName").equals("海天特辣黄豆酱230g*15")) {
               Failure=true ;
               FailureMessage ="pkId: " + pkId + ", material name error, name = " + temp.get("materialName");
               return;
           }
           count++;
       }
     }
    
     if (count != 2) {
       log.info("count != 2");
       Failure=true ;
       FailureMessage ="pkId not in range";
       return;
     }
    
     log.info(array.toString())

    1、先通过prev.getResponseDataAsString获取到响应的返回结果,然后通过org.json.JSONObject和org.json.JSONArray两个类来解析返回的相应结果。
    2、解析出想要的Json对象后,在for循环中对Json对象中每一个需要检测的值和期望的进行比对,如果不正确,Failure设置为true,FailureMessage设置具体的错误信息。
    3、for循环中有可能一开始的pkId取值就和期望不一致,所以这时需要计算下遍历的计数count,如果计数和期望的不一致,说明响应结果和期望结果的数量不一致。

 

【Jmeter测试】如何使用BeanShell断言判断请求返回的Json相应结果的更多相关文章

  1. 使用BeanShell断言判断请求返回的Json相应结果(不同json格式整理)

    第一种json格式 { "code": 0, "msg": "success", "success": true, &q ...

  2. jmeter ---测试TCP服务器/模拟发送TCP请求

    jmeter测试TCP服务器/模拟发送TCP请求 jmeter测试TCP服务器,使用TCP采样器模拟发送TCP请求. TCP采样器:打开一个到指定服务器的TCP / IP连接,然后发送指定文本并等待响 ...

  3. jmeter测试TCP服务器/模拟发送TCP请求

    jmeter测试TCP服务器,使用TCP采样器模拟发送TCP请求. TCP采样器:打开一个到指定服务器的TCP / IP连接,然后发送指定文本并等待响应. jmeter模拟发送TCP请求的方法: 1. ...

  4. jmeter测试TCP服务器/模拟发送TCP请求 设置16进制发送(转)

    转载留存:http://blog.sina.com.cn/s/blog_46d0362d0102v8ii.html 性能测试需要模拟多种场景,经常受制于资源限制,没办法建立贴近实际部署环境的场景.因而 ...

  5. java 接口请求返回通用json

    public class BaseResponseBody { // 不能添加属性 仅做泛型使用 } public class ResponseBase<T extends BaseRespon ...

  6. Jmeter测试入门——带token的http请求

    安装 官网下载地址:http://jmeter.apache.org/download_jmeter.cgi 下载完成后解压zip包 启动JMeter,双击JMeter解压路径bin下面的jmeter ...

  7. php 判断请求是否是json

    $object =file_get_contents("php://input"); $arr = is_json($object); if($arr){ var_dump($ar ...

  8. 『动善时』JMeter基础 — 31、JMeter中BeanShell断言详解

    目录 1.BeanShell简介 2.Beanshell的内置变量和方法 3.BeanShell断言界面详解 4.BeanShell断言的使用 (1)测试计划内包含的元件 (2)登陆接口请求界面内容 ...

  9. jmeter测试结果jtl字段分析

    1  Bytes Throughput Over Time  每秒传输字节吞吐量,表明Jmeter在测试时,随着时间推移发送和接受的字节数 2  Response Codes per Second  ...

随机推荐

  1. SpringMVC整合FreeMarker实例

    FreeMarker作为模板引擎,是比较常用的. FreeMarker官方文档地址为:https://freemarker.apache.org/ 现在浏览器或者翻译工具这么多,对于英文方面,我想大多 ...

  2. 【CSS-移动端响应式布局详解】

    背景 移动端响应式布局开发主要方案有: 基于rem开发 基于媒体查询 基于弹性盒 基础概念 在讨论响应式布局知识前,先了解下移动端常用基础概念. 逻辑像素(CSS pixels) 浏览器使用的抽象单位 ...

  3. 【Dubbo源码阅读系列】服务暴露之远程暴露

    引言 什么叫 远程暴露 ?试着想象着这么一种场景:假设我们新增了一台服务器 A,专门用于发送短信提示给指定用户.那么问题来了,我们的 Message 服务上线之后,应该如何告知调用方服务器,服务器 A ...

  4. ES6读书笔记(一)

    前言 前段时间整理了ES5的读书笔记:<你可能遗漏的JS知识点(一)>.<你可能遗漏的JS知识点(二)>,现在轮到ES6了,总共分为四篇,以便于知识点的梳理和查看,本篇内容包括 ...

  5. 对于PHP绘图技术的理解

    要使用PHP绘图,就得在php.ini文件中设置一下 找到这个位置 ;extension=php_gd2.dll,然后把前面的分号去掉,重启下apache就可以了 几乎每行代码我都写了注释,方便看懂 ...

  6. 19-3-13Python中的函数

    def:关键字.定义.声明一个函数. def make():定义函数'make' *注:定义后的函数不调用是不执行的 函数的调用: 函数名+()==函数的调用 def addnum(): a = in ...

  7. 关于osi的7层与tcp的4层网络协议的理解

    osi 七层模型 应用层 提供接口 表示层 机器语言的二进制转换 对话层 决定是否传输 传输层 确定可不可靠 排差错 控流 网络层 提供逻辑地址 选路 数据链路层 mac 错误检测 物理层 设备间的比 ...

  8. php网易云信im即时通讯和聊天室

    话不多说 直接上代码 <?php/** * Created by PhpStorm. * User: lhl * Date: 2019/4/10 * Time: 17:38 */ namespa ...

  9. 树莓派GPIO控制LED彩灯

    树莓派使用GPIO接口来控制LED灯,自制五彩炫光的节日彩灯. 1.硬件准备 a. 树莓派(Raspberry Pi)一个 b. 彩色RGB二极管 c. 杜邦线 d. 5V电源引脚 以上所有零件均可在 ...

  10. 002---rest_framework认证组件

    rest_framework认证组件 问题:有些API,需要用户登录才能访问,有些无需登录就能访问. 解决: a. 创建两个模型类:UserInfo---OneToOne---UsetToken b. ...