jmeter之beanshell断言---数据处理

匿名 (未验证) 提交于 2019-12-02 22:56:40

在做接口测试时,对响应数据的校验是非常重要的部分;在使用Jmeter进行接口测试时,有多种respone校验方式,比如响应断言、BeanShell断言等等,BeanShell断言可以自定义断言,自由灵活的用脚本实现断言。

1.什么是BeanShell ?


运行其内部的脚本处理Java应用程序,还可以在运行过程中动态执行你java应用程序执行java代码,因为BeanShell是用java写的,运行在同一个虚拟机的应用程序,因此可以自由地引用对象脚本并返回结果。

下面来介绍如何使用beanshell来进行断言和数据处理,假如我们有如下的response数据:

1 { 2     "message": "不能发送小于当前时间点的定时任务", 3     "statusCode": 200 4 }

(1).我们使用JSONObject对象来获取json数据,首先需要下载org.json的jar包,然后在测试计划中导入该jar包,并在jmeter的lib目录下放入该jar包,下面验证statusCode的值是否等于200

 1 import org.json.*;  2   3 //获取上一个请求的返回  4 String jsonString = prev.getResponseDataAsString();  5 JSONObject responseJson = new JSONObject(jsonString);  6   7 //判断返回值是否和预期一致  8 if (responseJson.getInt("statusCode") != 200) {  9     //把断言失败置为真,即用例失败,并在结果树中显示FailureMessage 10     Failure = true; 11     FailureMessage = "statusCode的返回值有误"; 12 }

(2).如果要验证respone中message的值是否与预期一致,需要怎么做呢?

 1 import org.json.*;  2   3 //获取上一个请求的返回  4 String jsonString = prev.getResponseDataAsString();  5 JSONObject responseJson = new JSONObject(jsonString);  6   7 String fbpcontent = responseJson.getString("message");  8 if (!fbpcontent.equals("不能发送小于当前时间点的定时任务")) {  9     //把断言失败置为真,即用例失败,并在结果树中显示FailureMessage 10     Failure = true; 11     FailureMessage = "message与实际值不一致"; 12 }

假如我们有如下的response响应数据:

 1 {  2     "statusCode": 200,  3     "data": [  4         {  5             "i": "50356",  6             "n": "项目一",  7             "v": "2.0",  8             "iconUrl": "",  9         }, 10         { 11             "i": "45280", 12             "n": "项目二", 13             "v": "3.0", 14             "iconUrl": "", 15         }, 16         { 17             "i": "14656", 18             "n": "项目三", 19             "v": "2.6", 20             "iconUrl": "", 21         }, 22         { 23             "i": "66213", 24             "n": "项目四", 25             "v": "5.0", 26             "iconUrl": "", 27         } 28     ] 29 }

(3).我们需要解析数组data的值,如何去解析呢?

 1 import org.json.*;  2 import java.util.Arrays;  3   4 //获取上一个请求的返回  5 String jsonContent = prev.getResponseDataAsString();    6   7 JSONObject response = new JSONObject(jsonContent);    8 JSONArray groups = response.getJSONArray("data");    9 String strData= groups.toString();  10 log.info(strData)

现在有更加复杂格式的respone数据:

 1 {    2   "priorityGroups": {    3     "proId": 1234,    4     "name": "项目一",    5     "groups": [    6       {    7         "id": "50356",    8         "items": [    9           {   10             "proId": 1360,   11             "n": "PC端",   12             "index": 1   13           },   14           {   15             "proId": 1361,   16             "n": "iOS端",   17             "index": 2   18           },   19           {   20             "proId": 1362,   21             "n": "安卓端",   22             "index": 4   23           }   24         ]   25       }   26     ]   27   },   28   "promotion": {   29     "proId": 1364,   30     "cusId": 84,   31     "name": "项目二",   32     "from": 1470821215,   33     "to": 1470907615,    34     "status": 1,   35     "objectId": 1069,   36     "createBy": 394,   37     "eff": 1470821215000,   38     "createTime": 1470821155000   39   }   40 }

(4).我们需要解析groups中的数据,需要怎么实现呢?

1 import org.json.JSONArray;   2 import org.json.JSONException;   3 import org.json.JSONObject;   4  5 String jsonContent = prev.getResponseDataAsString();   6  7 JSONObject response = new JSONObject(jsonContent);   8 JSONArray groups = response.getJSONObject("priorityGroups").getJSONArray("groups");   9 String strGroups = groups.toString();

原文:https://www.cnblogs.com/lwjnicole/p/9383776.html

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!