Bean Shell常用内置变量
JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下:
log:写入信息到jmeber.log文件,使用方法:log.info(“This is log info!”);
ctx:该变量引用了当前线程的上下文,使用方法可参考:org.apache.jmeter.threads.JMeterContext。
vars - (JMeterVariables):操作jmeter变量,这个变量实际引用了JMeter线程中的局部变量容器(本质上是Map),它是测试用例与BeanShell交互的桥梁,常用方法:
a) vars.get(String key):从jmeter中获得变量值
b) vars.put(String key,String value):数据存到jmeter变量中
更多方法可参考:org.apache.jmeter.threads.JMeterVariables
props - (JMeterProperties - class java.util.Properties):操作jmeter属性,该变量引用了JMeter的配置信息,可以获取Jmeter的属性,它的使用方法与vars类似,但是只能put进去String类型的值,而不能是一个对象。对应于java.util.Properties。
a) props.get("START.HMS"); 注:START.HMS为属性名,在文件jmeter.properties中定义
b) props.put("PROP1","1234");
prev - (SampleResult):获取前面的sample返回的信息,常用方法:
a) getResponseDataAsString():获取响应信息
b) getResponseCode() :获取响应code
更多方法可参考:org.apache.jmeter.samplers.SampleResult
sampler - (Sampler):gives access to the current sampler
jmeter之beanshell断言实例
方法一:
首先储存一个接口的响应结果,比如在http请求的后面添加beanshell后置处理器(BeanShell PostProcessor)来储存http请求的响应结果:
import org.json.*; //获取上一个请求的返回值
String response = prev.getResponseDataAsString();
//将返回值转换为json
JSONObject responseJson = new JSONObject(response);
//获取responseMessage
String message = responseJson.getString("responseMessage");
log.info("message的值:" + message); //使用vars.put()方法储存变量message
vars.put("message",message);
//获取titleLink
String titleLink = responseJson.getJSONObject("data").getString("titleLink");
log.info("titleLink的值:" + titleLink);
//使用vars.put()方法储存变量message
vars.put("titleLink",titleLink);
在后面的其他接口中如何需要使用变量message 和 titleLink,可以使用${message} 和 ${titleLink}来获取变量的值;
变量储存好后,在需要断言的接口后面添加BeanShell断言,使用Failrue来标识断言失败,FailureMessage标示断言失败的原因,如:
//使用vars.get()方法获取变量的值
String message= vars.get("message"); if(!message.equals("success")) {
Failure = true;
FailureMessage = "规则解析失败";
}else{
FailureMessage = "规则解析成功";
}
方法二:
直接在需要断言的接口后面使用beanshell断言,使用Failrue来标识断言失败,FailureMessage标示断言失败的原因,如:
import org.json.*; //获取上一个请求的返回值
String response = prev.getResponseDataAsString();
//将返回值转换为json
JSONObject responseJson = new JSONObject(response);
//获取responseMessage
String message = responseJson.getString("responseMessage");
log.info("message的值:" + message); if(!message.equals("success")){
Failure = true;
FailureMessage = "规则解析失败,message不等于success";
return;
} //获取titleLink
Object titleLink = responseJson.getJSONObject("data").get("titleLink");
log.info("titleLink的值:" + titleLink.toString()); if(titleLink.toString().equals("null") || "".equals(titleLink)){
Failure = true;
FailureMessage = "规则解析失败,titleLink为空";
}else if(!titleLink.toString().startsWith("http") && !titleLink.toString().startsWith("https")){
Failure = true;
FailureMessage = "规则解析失败,titleLink不为空,但是不是以http或者https开头的";
}

接口的响应数据为:
{
: "responseCode":"",
: "responseMessage":"success",
: "responseType":null,
: "data":
: {
: : "city":"上海",
: : "rentUnit":"月",
: : "source":"个人房源网",
: : "title":"徐盈路1188弄徐泾青浦徐泾租房",
: : "belonger":"个人",
: : "housingType":"住宅",
: : "floor":"高层",
: : "rentPrice":"",
: : "titleLink":"http://sh.grfy.net/rent/d-34612565.html",
: : "decoration":null,
: : "direction":null,
: : "isSplit":"否",
: : "imgs":null,
: : "publishTime":"2018-07-25T23:20:33.471",
: : "contactMobile":null,
: : "website":"http://sh.grfy.net/rent/list_2_0_0_0-0_0_0-0_0_2_0_{}_.html",
: : "address":"徐泾",
: : "contactName":"王女士",
: : "houseType":"4室2厅2卫",
: : "estate":"徐泾",
: : "roomArea":"",
: : "collectHouseType":"住宅",
: : "collectType":"出租",
: : "district":"青浦",
: : "totalFloor":"共20层",
: : "region":"上海",
: : "isRegister":"否",
: : "desc":"仁恒西郊花园 4室2厅2卫 房屋亮点 新上 配套齐全 有阳台 首次出租 随时看房 出租要求 一家人 一年起租 租户稳定 作息正常 房源描述小区环境好,物业管理成熟,私人会所实施配套齐全,临近地铁17号徐盈站,周边多所国际学校,仁恒的房子品质有保障。无中介费。"
: }
}
断言失败如下:

Bean Shell常用内置变量的更多相关文章
- Bean Shell常用内置变量总结
JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下: log:写入信息到jmeber.log文件,使用方法:log.info( ...
- Jmeter之Bean shell使用-常用内置变量
Bean Shell常用内置变量 JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下: log:写入信息到jmeber.l ...
- MySQL常用内置变量
MySQL用很多常用的内置变量,掌握这些内置变量后对于我们快速获取当前MySQL的配置有很大帮助,下面就来列举几个常用的变量. 查看当前MySQL版本号信息.show variables like ...
- Python - 常用内置变量
直接上代码 #!/usr/bin/env python # -*- coding: utf-8 -*- """ 这是注释__doc__会打印这部分内容 "&qu ...
- CMake之常用内置变量和message用法
关于 cmake 定义了相当丰富的变量,然而,我常用的也就那几个 脑子笨,记不住变量的值时,我会使用cmake的message函数输出变量值 为什么要写这个? 最近尝试使用Modern CMake, ...
- jmeter 常用内置变量
1. vars API:http://jmeter.apache.org/api/org/apache/jmeter/threads/JMeterVariables.html vars.get(& ...
- nginx常用内置变量
$args #请求中的参数值 $query_string #同 $args $arg_NAME #GET请求中NAME的值 $is_args #如果请求中有参数,值为"?",否则为 ...
- JMeter之BeanShell常用内置对象
一.什么是Bean Shell BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法; BeanShell是一种松散类型的脚本语言(这点和JS类似); BeanS ...
- nginx应用场景,特性,目录结构,常用模块,内置变量,URL和URI,http状态码,配置文件详解
1.nginx介绍 1丶俄罗斯人开发的,开源www服务软件 2丶软件一共780K 3丶nginx本身是一款静态(html,js,css,jpg等)www软件 4丶静态小文件高并发,同时占用的资源很少, ...
随机推荐
- Python:GeoJson格式的多边形裁剪Tiff影像并计算栅格数值
JSON是通过键值对表示数据对象的一种格式,其全称为JavaScript Object Notation,它采用完全独立于编程语言的文本格式来存储和表示数据,轻量级.简洁清晰的层次结构.容易解析等特点 ...
- sed 追加文件内容
追加用法总结 1.a 在匹配行后面追加 2.i 在匹配行前面追加 3.r 将文件内容追加到匹配行后面 4.w 将匹配行写入指定文件 在匹配行后面追加 a passwd文件第10行后面追加"A ...
- 一语道破Java 11的ZGC为何如此高效
GC是大部分现代语言内置的特性,Java 11 新加入的ZGC号称可以达到10ms 以下的 GC 停顿,本文作者对这一新功能进行了深入解析.同时还对还对这一新功能带来的其他可能性做了展望.ZGC是否可 ...
- python 元类理解
原文来自:https://segmentfault.com/a/1190000011447445 学懂元类,你只需要知道两句话: 道生一,一生二,二生三,三生万物 我是谁?我从哪来里?我要到哪里去? ...
- Windows——系统盘重置密码
一.制作好系统启动U盘 软碟通自己制作即可 二.这进入到安装前界面按Shift+F10调出命令提示符 三.输入regedit后按回车进入注册表编辑器 四. 左键单击选中HKEY_LOCAL_MACHI ...
- thrift入门(1)
参考:https://www.jianshu.com/p/4723ce380b0e https://www.cnblogs.com/carlos-mm/p/6297197.html 一. 什么是Thr ...
- 使用poi导出固定excel的模板,出现汉字不能自动设置行宽
因为在工作中,可能因为不同的原因遇到不同的问题,本人就分享遇到的一个大坑 因为我要将数据库中的一部分字段的名称作为Excel中的列名,所以需要导出汉字,然后在对应的汉字下面填充数据. 正是因为这部分汉 ...
- U盘损坏?
- Restful架构API编码规范
Restful API 目前比较成熟的一套互联网应用程序的API设计理论 一.协议 API与用户的通信协议,总是使用HTTPs协议. 二.域名 应该尽量将API部署在专用域名之下. https://a ...
- php数据类型之查看和判断数据类型
我们知道了一个数据的类型,才能进行下一步操作.后面的时候,大家可以学习到更多的知识——自定义功能(函数). 我们来做一个场景模拟:(注:眼前不用会写这个函数,以后会教大家) 假设,我们可以写一个智能的 ...