当前位置: 首页 > news >正文

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 = "事件校验失败,轮询接口返回空";
 	}

  

相关文章:

  • 裁掉你的前端吧,切版网帮你解决
  • 简介Doxygen
  • 2048-控制台版本
  • 第一章 深入理解Magento - Magento强大的配置系统
  • Directx9.0 学习教程3 -图形学之创建点 线 三角形 等
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • maven管理项目用junit测试遇到的找不到编译类问题
  • 2017中国手机趋势报告:天猫手机客单价2104元,品质时代来临
  • docker 在Windows下使用遇到的坑
  • CSS鼠标属性值
  • django-1.11.3 源码详解 -- 0001 django-admin.py 的调用逻辑
  • JMeter中返回Json数据的处理方法
  • getopts命令行参数处理
  • SparkSQL架构
  • 两个fragment之间简单的跳转
  • 分享一款快速APP功能测试工具
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • css选择器
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • JAVA 学习IO流
  • jquery cookie
  • Markdown 语法简单说明
  • mysql中InnoDB引擎中页的概念
  • Netty 4.1 源代码学习:线程模型
  • Vue官网教程学习过程中值得记录的一些事情
  • 创建一种深思熟虑的文化
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 关于for循环的简单归纳
  • 简单数学运算程序(不定期更新)
  • 排序算法之--选择排序
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 前端之Sass/Scss实战笔记
  • 如何用vue打造一个移动端音乐播放器
  • 深度解析利用ES6进行Promise封装总结
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 你对linux中grep命令知道多少?
  • (02)vite环境变量配置
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (ibm)Java 语言的 XPath API
  • (ros//EnvironmentVariables)ros环境变量
  • (备忘)Java Map 遍历
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (独孤九剑)--文件系统
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (转)Oracle存储过程编写经验和优化措施
  • (转)可以带来幸福的一本书
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .NET 指南:抽象化实现的基类
  • .NET单元测试
  • .NET使用HttpClient以multipart/form-data形式post上传文件及其相关参数
  • .NET微信公众号开发-2.0创建自定义菜单
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件
  • .vollhavhelp-V-XXXXXXXX勒索病毒的最新威胁:如何恢复您的数据?