【Jmeter】BeanShell断言--数据处理
来源:互联网 发布:免费数据库同步软件 编辑:程序博客网 时间:2024/06/06 03:34
API接口测试中,对于接口请求respone的校验是非常重要的一个环节
在使用Jmeter进行接口测试时,有多种respone校验方式,比如响应断言、BeanShell断言等等,BeanShell断言可以自定义断言,自由灵活的用脚本实现断言
什么是BeanShell
小型嵌入式Java源代码解释器,具有对象脚本语言特性,能够动态地执行标准JAVA语法
运行其内部的脚本处理Java应用程序,还可以在运行过程中动态执行你java应用程序执行java代码,因为BeanShell是用java写的,运行在同一个虚拟机的应用程序,因此可以自由地引用对象脚本并返回结果
先看看这样的respone
{ "message": "不能发送小于当前时间点的定时任务", "statusCode": 200}
现在需要验证statusCode的值是否为200
import org.json.*;import java.util.Arrays;//获取上一个请求的返回String jsonString = prev.getResponseDataAsString();JSONObject responseJson = new JSONObject(jsonString);//判断返回值是否和预期一致if (responseJson.getInt("statusCode") != 200) { //把断言失败置为真,即用例失败,并在结果树中显示FailureMessage Failure = true; FailureMessage = "statusCode的返回值有误";}
如果要验证respone中message的值是否与预期一致,需要怎么做呢?
import org.json.*;import java.util.Arrays;//获取上一个请求的返回String jsonString = prev.getResponseDataAsString();JSONObject responseJson = new JSONObject(jsonString);String fbpcontent = responseJson.getString("message");if (!fbpcontent.equals("不能发送小于当前时间点的定时任务")) { //把断言失败置为真,即用例失败,并在结果树中显示FailureMessage Failure = true; FailureMessage = "message与实际值不一致";}
现有这样格式的respone数据
{ "statusCode": 200, "data": [ { "i": "50356", "n": "项目一", "v": "2.0", "iconUrl": "", }, { "i": "45280", "n": "项目二", "v": "3.0", "iconUrl": "", }, { "i": "14656", "n": "项目三", "v": "2.6", "iconUrl": "", }, { "i": "66213", "n": "项目四", "v": "5.0", "iconUrl": "", } ]}
需要解析数组data的值,如何去解析呢?
import org.json.*;import java.util.Arrays;//获取上一个请求的返回String jsonContent = prev.getResponseDataAsString(); JSONObject response = new JSONObject(jsonContent); JSONArray groups = response.getJSONArray("data"); String strData= groups.toString(); log.info(strData)
现在有更加复杂格式的respone数据
{ "priorityGroups": { "proId": 1234, "name": "项目一", "groups": [ { "id": "50356", "items": [ { "proId": 1360, "n": "PC端", "index": 1 }, { "proId": 1361, "n": "iOS端", "index": 2 }, { "proId": 1362, "n": "安卓端", "index": 4 } ] } ] }, "promotion": { "proId": 1364, "cusId": 84, "name": "项目二", "from": 1470821215, "to": 1470907615, "status": 1, "objectId": 1069, "createBy": 394, "eff": 1470821215000, "createTime": 1470821155000 } }
如果需要解析groups中的数据,需要怎么实现呢?
import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; String jsonContent = prev.getResponseDataAsString(); JSONObject response = new JSONObject(jsonContent); JSONArray groups = response.getJSONObject("priorityGroups").getJSONArray("groups"); String strGroups = groups.toString();
BeanShell的获取数据解析,还可以使用Gson提供的方法
//prev.getResponseDataAsString是Jmeter提供的方法,可以调取上次请求的响应字符串 response = prev.getResponseDataAsString(); //使用Gson提供的方法解析jsonJsonParser parser = new JsonParser(); JsonObject responseObj = (JsonObject) parser.parse(response);
阅读全文
0 0
- 【Jmeter】BeanShell断言--数据处理
- jmeter beanShell断言
- Jmeter使用BeanShell 断言进行判断
- 【Jmeter】BeanShell断言--数据解析&数据库对比校验
- jmeter beanshell
- jmeter之断言、数据提取器(正则表达式、jsonpath、beanshell)、聚合报告、参数化
- Jmeter 接口测试中使用Beanshell断言: 将接口响应报文与数据库结果对比
- jmeter之BeanShell Sampler
- jmeter beanshell使用说明
- jmeter beanshell使用说明
- JMeter中的BeanShell使用
- JMeter BeanShell 应用
- Jmeter:使用BeanShell
- Jmeter:使用BeanShell
- Jmeter:使用BeanShell
- JMeter中的BeanShell使用
- jmeter beanshell使用说明
- Jmeter beanshell preprocessor用法
- Android 必知必会
- 在ArrayList中加上Activity
- 算法导论 22.1-4 通用汇点 O(V)
- [python + pillow] 修改图片的尺寸
- 服务器提示Can’t assignrequested address的问题分析
- 【Jmeter】BeanShell断言--数据处理
- python008 -- 函数及高阶函数
- android 换肤
- python ---待修改,ATM取款系统
- DDoS攻击原理及防护方法论
- 毕业
- 士为知己者死,女为悦己者容
- YoMail Group | 办公室如何正正经经聊聊天
- 2132: 中南大学2017年ACM暑期集训前期训练题集(入门题)