博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
beanshell获取响应结果数据
阅读量:6510 次
发布时间:2019-06-24

本文共 2903 字,大约阅读时间需要 9 分钟。

http://blog.csdn.net/lluozh2015/article/details/72834014

标签: 
 分类:
Interface(20) 

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);

转载于:https://www.cnblogs.com/jtestroad/p/8459439.html

你可能感兴趣的文章
mysql错误:Table XXX is marked as crashed and should be repaired
查看>>
CHAP认证过程
查看>>
Nginx反向代理、负载均衡、缓存、URL重写及读写分离
查看>>
Android开发: 调用Camera API 创建Camera
查看>>
Centos 5.5 NTP服务器配置
查看>>
curl参数
查看>>
Java 经典习题-初学
查看>>
syn***总结
查看>>
Oracle学习笔记之数据库获取随机的n条记录
查看>>
利用反射——查看类的成员
查看>>
ZFS的元数据
查看>>
Xp Dos添加路由表
查看>>
我的友情链接
查看>>
python学习--字典排序
查看>>
leetCode 198. House Robber | 动态规划
查看>>
Java图片合成
查看>>
用java 代码下载Samba服务器上的文件到本地目录以及上传本地文件到Samba服务器...
查看>>
医院商务智能及大数据项目建设方案建议稿
查看>>
Android---让你的APK程序开机自动运行
查看>>
fcntl函数详解
查看>>