jmeter使用BeanShell断言
1. 首先存储一个接口的响应结果,如在http请求的BeanShell PostProcessor:
import java.io.UnsupportedEncodingException; System.out.println(prev.getResponseCode());
String str = prev.getResponseDataAsString();
/*
String result = ${__urldecode(str)};
System.out.println("------------"+result);
*/
String result = "";
try {
result = java.net.URLDecoder.decode(str, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
System.out.println("--------"+result); vars.put("result",result);
log.info(result);
或者是jdbc request中BeanShell PostProcessor:
columnValue = vars.getObject("testresultvariable").get(0).get("app_id");
vars.put("value",columnValue);
变量存储好后,再需要断言的接口后面添加BeanShell断言,使用Failrue来标识断言失败,FailureMessage标示断言失败的原因,如:
String result = vars.get("result");
if(!result.contains("\"result\":2")) {
Failure = true;
FailureMessage = "分润查询失败";
}else{
FailureMessage = "分润查询成功";
}
断言结果是:

使用第三方jar包,结合fastjar的JSON解析如下:
import java.util.ArrayList;
import java.util.List;
import com.alibaba.fastjson.*;
import com.jmeter.*; listexc = new ArrayList();
listexc.add(351);
listexc.add(301);
listexc.add(302);
listexc.add(304);
listexc.add(305);
listexc.add(306);
list = new ArrayList();
flag = "false"; if ((prev.getResponseCode() != null) && (prev.getResponseCode().equals("200") == true)) {
String json = prev.getResponseDataAsString();
JSONObject jo = JSON.parseObject(json);
if(jo.containsKey("events")) {
JSONArray ja = jo.getJSONArray("events");
if(ja.size()>0) {
flag = "true";
for(int i = 0;i<ja.size();i++) {
System.out.println(ja.get(i));
JSONObject joe = ja.getJSONObject(i);
System.out.println(joe.get("eventId"));
list.add(joe.get("eventId"));
}
System.out.println(list.size());
System.out.println(new EventCompare().compare(listexc,list));
if(!new EventCompare().compare(listexc,list)){
Failure = true;
FailureMessage = "事件校验失败,预期结果和实际结果不一致,预期事件:"+listexc+" ,实际事件:"+list;
}
}else{
flag = "false";
Failure = true;
FailureMessage = "事件校验失败,轮询接口返回没有eventId";
}
vars.put("result",flag);
System.out.println(list.size());
/*
System.out.println(listexc.containsAll(list));
if(listexc.containsAll(list)) {
Failure = true;
FailureMessage = "事件校验失败";
}
*/
}else {
Failure = true;
FailureMessage = "事件校验失败,轮询接口返回没有events";
}
}else {
Failure = true;
FailureMessage = "事件校验失败,轮询接口返回空";
}
jmeter使用BeanShell断言的更多相关文章
- 记录jmeter使用beanshell断言获取复杂的json字符串参数值
实战示例 测试场景 电商系统经常会涉及到商品的库存数量的压测,在用户下单前需要先做库存余量的判断,当余量不足时用户无法下单,保证商品的有效售卖 库存余量查询响应结果 响应结果一般是json字符串的形式 ...
- JMeter中BeanShell断言使用一
Jmeter Ant Task如何让beanshell断言失败的详细信息展示在report里面 首先必须给beanshell断言添加FailureMessage if(${TotalClient_SS ...
- jmeter之beanshell断言---数据处理
在做接口测试时,对响应数据的校验是非常重要的部分:在使用Jmeter进行接口测试时,有多种respone校验方式,比如响应断言.BeanShell断言等等,BeanShell断言可以自定义断言,自由灵 ...
- Jmeter之BeanShell断言使用
1.Bean Shell常用内置变量 JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下: log:用来记录日志文件,写入到j ...
- 『动善时』JMeter基础 — 31、JMeter中BeanShell断言详解
目录 1.BeanShell简介 2.Beanshell的内置变量和方法 3.BeanShell断言界面详解 4.BeanShell断言的使用 (1)测试计划内包含的元件 (2)登陆接口请求界面内容 ...
- Jmeter之BeanShell 断言
作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15436864.html 博客主页:https://www.cnblogs.com/testero ...
- jmeter之beanshell断言实例
.首先储存一个接口的响应结果,比如在http请求的后面添加beanshell后置处理器(BeanShell PostProcessor)来储存http请求的响应结果: import org.json. ...
- jmeter中beanshell断言的使用
简单使用beanshell的内容,进行测试内容的判断 这里通过断言内容,修改if的条件,达到发送警报邮件的功能 beanshell 代码如下: SampleResult 等效于 prev lo ...
- JMeter之BeanShell断言---获取时间戳
1.创建线程组,创建一个BeanShell Sampler,在其中编写BeanShell脚本. 2.在Jmeter中,可以利用${__time(,)}时间戳函数来获取十位的时间戳,如: vars.pu ...
随机推荐
- PIL 一秒切九图 朋友圈发图神器
注意图片像素返回值是(宽度,高度),pil填像素点坐标原点左上角. 判断像素点是否在圆方程中. import numpy as np from PIL import Image file = inpu ...
- netbackup 8.1安装前注意事项
一.NetBackup 主服务器的 Web 服务器用户/组设置步骤 文章 ID:100034818 上次发布时间:2017-08-24 产品:NetBackup 问题 从 NetBackup 8. ...
- 【luogu P1137 旅行计划】 题解
题目链接:https://www.luogu.org/problemnew/show/P1137 topsort + DP #include <queue> #include <cs ...
- SyncUI跨设备同步
SynUI控制代码 <script type="text/javascript"> /* SyncUI script (Learn more at http://syn ...
- LeetCode2.两数相加 JavaScript
给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将两数相加返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 示例: 输入:(2 -& ...
- 买手机时几GB+几GB啥意思
48GB 就是你每次下载手机软件呀.浏览图片呀.这些东西都放在48G里.你每次查看手机内存,就会看到你的48G用了多少.但是你什么时候看到你的4GB用了多少,都是那些360加速球呀提示你手机内存占用过 ...
- 2018 Wannafly summer camp Day3--Travel
Travel 描述 题目描述: 魔方国有n座城市,编号为1~n.城市之间通过n-1条无向道路连接,形成一个树形结构. 澜澜打算在魔方国进行mm次旅游,每次游览至少一座城市.为了方便,每次旅游游览的城市 ...
- 在Closing事件中,将e.Cancle设置成true,则Windows无法关机和重启系统的解决办法
最近在设计一个WinForm程序的时候遇到一个bug,就是From1窗体的关闭事件中设置了e.Cancle设置成true,导致系统无法关机重启,windows7 和windows xp都是这样. 我这 ...
- 【php学习-4】
var_1=11; print $var1->var_1.$var2->var_1; ?> print_Color(); ?> y=self::$x; # code... } ...
- JS高级. 04 增删改查面向对象版歌曲管理、递归、
增 数组.push() 删 数组.splice(开始删除索引,删除几个) 在当前对象中调用当前对象的方法中和属性,必须用this调用 nodeType判断节点类型 节点.nodeType == 1: ...