MeterSphere 接口测试 Beanshell 脚本使用:设置/获取接口信息、变量
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
MeterSphere 过程中,或多或少都会接触些BeanShell,它会使工具的使用,变得更灵活。文章记录了一些常用的方法,还有很多场景需要获取/设置当前测试用例的信息,找到具体的内置对象,打开官网文章,在method一栏即可查阅。
BeanShell是什么?
● BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法;
● BeanShell是一种松散类型的脚本语言;
● BeanShell是用Java写成的,一个小型的、免费的、可以下载、嵌入式的Java源代码解释器,具有对象脚本的特性;
● BeanShell可以执行标准Java语句和表达式,以及另外自身的一些脚本命令和语法。
1. BeanShellSampler 常用内置对象
内置对象 | 说明 | 官方文档 |
vars | 针对变量进行取值和赋值,而且这个取值和赋值行为只对当前线程的变量生效,而非全部线程。 | https://jmeter.apache.org/api/org/apache/jmeter/threads/JMeterVariables.html |
prev | prev 提供对当前取样器结果的访问能力 | https://jmeter.apache.org/api/org/apache/jmeter/samplers/SampleResult.html |
sampler | 获取当前取样器中信息 |
2. Beanshell 变量赋值和取值
2.1 存放变量
2.1.1 var.put()
put 方法声明:public void put(String key, String value) Parameters:key - the variable namevalue - the variable value 功能:创建或更新字符串变量 |
put |
2.1.2 var.putObject()
putObject
方法声明:public void putObject(String key,Object value)
Parameters:key - the variable namevalue - the variable value
功能:创建或更新一个非字符串变量。
putObject
|
2.2 获取变量
2.2.1 var.get()
方法声明:public String get(String key)
功能:获取变量的值并将其转换为字符串,若变量存在则将值转换为字符串,否则返回 null
|
2.2.2 var.getObject()
方法声明:public Object getObject(String key);
功能:获取变量的值(不转换为字符串)。若变量不存在则返回null
getObject
|
2.3 移除变量
remove
方法声明:public Object remove(String key)
功能:删除一个变量,并返回变量的值,若变量不存在则返回 null
|
2.4 批量赋值变量
方法声明:
public void putAll(Map<String,?> vars)
Parameters:
Map<String,?> 以下map的子类均可使用:AbstractMap, Attributes, AuthProvider, ConcurrentHashMap, ConcurrentSkipListMap, EnumMap, HashMap, Hashtable, IdentityHashMap, LinkedHashMap, PrinterStateReasons, Properties, Provider, RenderingHints, SimpleBindings, TabularDataSupport, TreeMap, UIDefaults, WeakHashMap
功能:批量增加/更新变量的值
|
3. Beanshell 获取响应体、响应状态码、请求头
3.1 获取响应状态码
方法声明:public String getResponseCode()
功能:获取响应状态码
|
3.2 获取是否为OK对应的状态码
方法声明:public boolean isResponseCodeOK()
功能:判断响应状态码是否为OK对应的状态码(200),结果只有true和false
|
3.3 获取String类型的响应结果
方法声明:
public String getResponseDataAsString()
|
3.4 获取取样器结果的响应头
方法声明:
public String getResponseHeaders()
|
3.5获取取样器请求头
方法声明:
public String getRequestHeaders()
|
3.6 获取URL以字符串返回
方法声明:
public String getUrlAsString()
|
3.7 设置响应体
方法声明:
public void setResponseData(String response)
|
4. Beanshell 获取请求参数
4.1 获取请求请求体内容
方法声明:
public CollectionProperty getArguments()
|
4.2 获取请求query参数部分
方法声明:
public String getQuery()
|
4.3 获取协议
方法声明:
public String getProtocol()
|
4.4 获取请求方式
方法声明:
public String getMethod()
返回值为大写GET
|
5. Beanshell 使用过程的坑
5.1 泛型问题
beanshell里面使用map时不能指定类似于java的Map<String,String> map = new HashMap<String,String>(),这样写会报错,只能用Map params = new HashMap();
5.1 获取问题
HeaderManager headerManager = sampler.getHeaderManager();这个方法不能获取默认的header,只能获取自己添加的header信息,比如自己再header里面加的token信息,默认的header信息,例如User-Agent是获取不到的,在获取headers之前一定要先判断一下header列表是否为空,如果不为空直接获取会报错
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |