Jmeter接口测试使用beanshell断言json返回

一般情况下响应断言就能解决很多问题,但是返回复杂的json时就需要用到beanshell断言。

举个例子

免费的接口API www.sojson.com/api/beian/sojson.com

host:    www.sojson.com

source:   api/beian/sojson.com (api/beian后面只能跟一级域名如:baidu.com或者sojson.com)

创建好线程组HTTP请求,给该请求加beanshell断言,代码如下,其中必须加prev.setSuccessful(false);设置用例的结果

beanshell代码如下

 1 import com.google.gson.JsonObject;
 2 import com.google.gson.JsonParser;
 3 import java.lang.*;
 4 //获取上一个请求的返回
 5 response = prev.getResponseDataAsString();
 6 log.info(response);
 7
 8 //正常情况的history应该为数据库查询出来的结果
 9 String history="{\"nature\":\"企业\",\"icp\":\"京ICP备16038595号\",\"indexUrl\":\"www.sojson.com\",\"sitename\":\"JSON在线解析\",\"domain\":\" sojson.com \",\"nowIcp\":\"京ICP备16038595号-2\",\"type\":200,\"search\":\"sojson.com\",\"checkDate\":\"\",\"name\":\"北京都芳商贸有限公司\"}";
10 //使用Gson解析json
11 JsonParser parser = new JsonParser();
12 JsonObject responseObj = (JsonObject) parser.parse(response);
13
14 JsonParser parser1 = new JsonParser();
15 JsonObject historyObj = (JsonObject) parser1.parse(history);
16
17 if(history == "")
18 {
19 //    Failure = true;
20     FailureMessage = "连接数据库失败或者数据库内没有历史数据";
21
22 //调用Gson提供的Json对象euqals方法判断是否一致
23 }else if(responseObj.equals(historyObj) == false)
24 {
25     log.info("不一样");
26     //设置该条用例结果,但是查看结果树中不会打印出错信息FailureMessage
27     //prev.setSuccessful(false);
28 //把断言失败置为真,即用例失败,并在结果树中显示FailureMessage
29 Failure = true;
30 FailureMessage = "请求返回和数据库不匹配";
31 }
32 else
33 {
34     log.info("俩一模一样");
35     }
时间: 2024-09-27 23:12:54

Jmeter接口测试使用beanshell断言json返回的相关文章

JMeter使用BeanShell断言

BeanShell简介 BeanShell是使用Java语法的一套脚本语言,在JMeter的多种组件中都有BeanShell的身影,如: 定时器:BeanShell Timer 前置处理器:BeanShell PreProcessor 采样器:BeanShell Sampler 后置处理器:BeanShell PostProcessor 断言:BeanShell Assert 监听器:BeanShell Listener 通过BeanShell可以对请求数据.响应数据或环境变量进行更加灵活的处理

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

在做接口测试时,对响应数据的校验是非常重要的部分:在使用Jmeter进行接口测试时,有多种respone校验方式,比如响应断言.BeanShell断言等等,BeanShell断言可以自定义断言,自由灵活的用脚本实现断言. 1.什么是BeanShell ? 小型嵌入式Java源代码解释器,具有对象脚本语言特性,能够动态地执行标准JAVA语法 运行其内部的脚本处理Java应用程序,还可以在运行过程中动态执行你java应用程序执行java代码,因为BeanShell是用java写的,运行在同一个虚拟机

Jmeter接口测试数据库断言的实现与设计

接口测试大部分都使用接口的响应值作为接口验证的依据,但在与数据库有交互的接口中这种结果判断不足以判断接口的正确性,本文将以jmeter作为接口测试的工具来实现接口的数据库断言 一. 总体思路概述 1. 使用jmeter发起接口请求 2. 使用json提取器获取接口响应结果中的关键内容 3. 使用jmeter发起数据库操作,得到数据库的值 4. 使用BeanShell断言,实现接口响应内容和数据库内容的对比 二. jmeter发起接口请求 以搜索接口为例,业务需求为:通过关键字搜索商品.接口信息如

jmeter之beanshell断言实例

.首先储存一个接口的响应结果,比如在http请求的后面添加beanshell后置处理器(BeanShell PostProcessor)来储存http请求的响应结果: 1 import org.json.*; 2 3 //获取上一个请求的返回值 4 String response = prev.getResponseDataAsString(); 5 //将返回值转换为json 6 JSONObject responseJson = new JSONObject(response); 7 //获

Jmeter BeanShell断言

这篇文章用来记录编写beanshell断言遇到得问题. 问题1:JSONObject not found in namespace 流程:在beanshell下写代码如下: 1 String response_data = prev.getResponseDataAsString(); 2 JSONObject data_obj = new JSONObject(response_data); 3 4 String current_page = data_obj.get("data")

Jmeter之BeanShell断言使用

1.Bean Shell常用内置变量 JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下: log:用来记录日志文件,写入到jmeber.log文件,使用方法:log.info(“This is log info!”); ctx(JmeterContext)通过它来访问context,使用方法可参考:org.apache.jmeter.threads.JMeterContext. vars - (JMeterVariabl

Jmeter的BeanShell断言

1.什么是BeanShell断言? BeanShell断言可以使用beanshell脚本来执行断言检查,可以用于更复杂的个性化需求,使用更灵活,功能更强大,但是要能够熟练使用beanshell脚本. 在这里除了可以使用beanshell的内置变量外,主要通过Failure和FailureMessage来设置断言结果. Failure = false;-----表示断言成功, FailureMessage = "……"; ----自定义的成功信息 Failure = true;-----

Jmeter接口测试实战-数据传递

接口与接口之间没有关联的测试是缺乏意义和没有灵魂的,只有数据在不同接口之间传递才能勾画出业务场景重要的链路. 我们用较为通用的http/https协议,接口普遍返回json方式为例. 举例场景: 比如电商平台,用户登录后产生令牌token, 其他接口拿着这个token判断用户是否登录才能进行相关操作, 当用户将商品加入购物车支付完成后,系统按照规则生成订单号, 同时会在该用户的全部订单列表中查到全部订单和相应状态. 要点分析: 1. login接口登录后生成token 2. pay支付接口拿到t

WEB接口测试之Jmeter接口测试自动化 (三)(数据驱动测试)

 接口测试与数据驱动 1简介 数据驱动测试,即是分离测试逻辑与测试数据,通过如excel表格的形式来保存测试数据,用测试脚本读取并执行测试的过程. 2 数据驱动与jmeter接口测试 我们已经简单介绍了接口测试参数录入及测试执行的过程,因为大量的测试脚本与测试数据内聚在一起,使得我们的测试脚本的可移植性及可维护性变得很不好,所以我们接下来采取了csv格式表格保存测试数据来驱动测试的方式. 2.1 新建一个csv文件 新建一个txt文档文件,重命名文件,修改文件后缀名为csv,如test.csv,