一般情况下响应断言就能解决很多问题,但是返回复杂的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代码如下

 import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import java.lang.*;
//获取上一个请求的返回
response = prev.getResponseDataAsString();
log.info(response); //正常情况的history应该为数据库查询出来的结果
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\":\"北京都芳商贸有限公司\"}";
//使用Gson解析json
JsonParser parser = new JsonParser();
JsonObject responseObj = (JsonObject) parser.parse(response); JsonParser parser1 = new JsonParser();
JsonObject historyObj = (JsonObject) parser1.parse(history); if(history == "")
{
// Failure = true;
FailureMessage = "连接数据库失败或者数据库内没有历史数据"; //调用Gson提供的Json对象euqals方法判断是否一致
}else if(responseObj.equals(historyObj) == false)
{
log.info("不一样");
//设置该条用例结果,但是查看结果树中不会打印出错信息FailureMessage
prev.setSuccessful(false);
//把断言失败置为真,即用例失败,并在结果树中显示FailureMessage
Failure = true;
FailureMessage = "请求返回和数据库不匹配";
}
else
{
log.info("俩一模一样");
}

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

  1. JMeter接口测试-如何循环使用接口返回的多值?

    前言 在用JMeter做接口测试的时候,经常会遇到这样一种情况:一个接口请求返回了多个值,然后下一个接口想循环使用前一个接口的返回值:第二种情况:只想循环请求前一个接口返回值中的随机不定长度的某一些值 ...

  2. 【Vlog】Jmeter之使用beanshell将json提取器中的多个值拼接为一个列表

    场景如下: json提取器返回了当前登录用户的所有好友id,然而下一个接口是把好友id拼成一个数组进行传参的,现需将所有的好友ID拼接起来,类似ID1,ID2,ID3......这样 beanshel ...

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

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

  4. 【Jmeter测试】如何使用BeanShell断言判断请求返回的Json相应结果

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

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

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

  6. 记录jmeter使用beanshell断言获取复杂的json字符串参数值

    实战示例 测试场景 电商系统经常会涉及到商品的库存数量的压测,在用户下单前需要先做库存余量的判断,当余量不足时用户无法下单,保证商品的有效售卖 库存余量查询响应结果 响应结果一般是json字符串的形式 ...

  7. jmeter 发送加密请求 beanshell断言 线程组间传递参数

    原文地址https://www.cnblogs.com/wnfindbug/p/5817038.html 最近在做http加密接口,请求头的uid参数及body的请求json参数都经过加密再发送请求, ...

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

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

  9. jmeter beanshell断言接口自动化实例

    一.JMeter介绍 Apache JMeter是一款优秀的开源性能测试工具,在国外无论是在性能测试还是接口测试领域都有着非常高的使用率,但由于本身没有完善的中文文档以及典型开源工具特点(界面不美观) ...

随机推荐

  1. 为Go程序创建最小的Docker Image

    本文将会介绍如何使用docker打包一个golang编写的应用程序,最终的产物就是一个makefile文件,可别小瞧这短短几行代码,涉及的知识点可不少,接下来我们就仔细剖析一下吧. FROM gola ...

  2. Next week plan

    1.get a job 2.write a high performance chatroom with encryption.  Use scala. Next Week turn to Rust

  3. 使用Angular Router导航基础

    名称 简介 Routes 路由配置,保存着那个URL对应着哪个组件,以及在哪个RouterOulet中展示组件. RouterOutlet 在HTML中标记路由内容呈现位置的占位符指令. Router ...

  4. PHP命令空间namespace及use的用法实践总结

    以下皆为本人自我理解内容,如有失误之处,请多多包涵. 文章大纲: 使用namespace的目的 namespace的使用方法 使用use的目的 use的使用方法 使用namespace的目的: 团队合 ...

  5. ##5.2 Nova计算节点-- openstack pike

    ##5.2 Nova计算节点 openstack pike 安装 目录汇总 http://www.cnblogs.com/elvi/p/7613861.html ##5.2 Nova计算节点 # co ...

  6. 自动化运维工具——ansible详解(二)

    Ansible playbook 简介 playbook 是 ansible 用于配置,部署,和管理被控节点的剧本. 通过 playbook 的详细描述,执行其中的一系列 tasks ,可以让远端主机 ...

  7. linux API函数大全

    获取当前执行路径:getcwd1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一个网络资源的连接 WNetAdd ...

  8. Yii2如何添加sql日志记录的配置信息

    在使用Yii2框架的时候,常常会出现没有sql日志记录的问题.在代码里一句一句的打印sql语句也不现实.所以就要用文件记录起来. 在 config/web.php 里面的 log配置中增加如下配置 [ ...

  9. suds库使用说明官方文档

    OVERVIEW The Suds web services client is a lightweight soap-based client for python the is licensed ...

  10. zkw模板

    水平有限,前缀和的前缀和什么的,rbq 两个操作: 1.区间l到r加上一个数x 2.查询区间[l,r]的区间和 #include<iostream> #include<cstdio& ...