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丶静态小文件高并发,同时占用的资源很少, ...
随机推荐
- S3C2440 gpio
WATCHDOG TIMER 原理图 手册 举例 start.S .globl _start _start: /* 关看门狗 */ /* 往WTCON(0x53000000)写0 */ ldr r0, ...
- SAP Leonardo图片处理相关的机器学习服务在SAP智能服务场景中的应用
本文作为Jerry最近正在做的一个项目的工作思路的梳理. 我们假设这样一个服务场景,技师上门维修某设备,发现设备上某零件损坏了,假设这位技师由于种种原因,没能根据自己的经验识别出这个零件的型号.此时技 ...
- MongoDB的删除操作
1.MongoDB 删除数据库的语法格式如下: db.dropDatabase() > show dbs admin .000GB config .000GB local .000GB sda ...
- linux7 上安装mongodb4.2.1操作步骤
MongoDB是一个通用的.基于文档的分布式数据库,它是为现代应用程序开发人员和云时代而构建的.没有数据库能让你更有效率. 1.下载需要的软件包https://www.mongodb.com/down ...
- pycharm连接数据库
今天说说如何使用pycharm连接oracle数据库 1.首先你需要安装oracle数据库 2.在pycharm中安装cx_Oracle.在file->settings->Project- ...
- java.lang.AbstractMethodError: org.powermock.api.mockito.internal.mockmaker.PowerMockMaker.isTypeMockable
[转]https://stackoverflow.com/questions/53539930/java-lang-abstractmethoderror-org-powermock-api-mock ...
- Notepad++ 连接远程 NppFTP
远程连接 1.自动安装: 插件——> Plugin Manager——>ShowPlugin Manager——>勾选NppFTP插件——>Install 2. 手动安装 ...
- The 2019 Asia Nanchang First Round Online Programming Contest The Nth Item
The Nth Item 思路: 先用特征根法求出通向公式,然后通向公式中出现了\(\sqrt{17}\),这个可以用二次剩余求出来,然后可以O(\(log(n)\))求出. 但是还不够,我们先对\( ...
- FontLab
FontLab 字体制作软件
- python算法与数据结构-常用查找算法一(37)
一.什么是查找 查找(Searching)就是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录). 查找表(Search Table):由同一类型的数据元素(或记录)构成的集合 ...