jmeter--JSR223组件常⽤⽅法
JSR是Java Specification Requests的缩写,意思是Java规范提案。JSR已成为Java界的⼀个重要标准.
JSR223 控件允许执⾏ JSR223 脚本代码⽤于创建/更新所需的某些变量。
JSR223 取样器 +groovy 脚本可⼤⼤提⾼性能的功能(编译),同时⽀持更多的脚本语⾔,其中包括 BeanShell 脚本,但是BeanShell 脚本编译效率更⾼。所以在编写脚本时不建议使⽤ BeanShell 取样器。
使⽤JSR223组件⾸先要选择脚本语⾔。
JSR223定义了可集成在Java平台上运⾏的⼀系列脚本语⾔。⽐如Groovy,JavaScript等.⽤的最多的是Groovy。Groovy 语法与Java 语⾔的语法很相似,Groovy 和 Java 语⾔的主要区别是:完成同样的任务所需的 Groovy 代码⽐ Java 代码更少。
以下jsr233 preprocessor为例:
名词解释:
名称:显⽰的此取样器的描述性名称,可⾃定义
语⾔:要使⽤的JSR223脚本代码语⾔的类型。本例我们选择groovy。换防盗门锁
参数:要传递到脚本⽂件或脚本的参数列表。多个参数以“;”分隔。
脚本⽂件:⽤于执⾏的脚本⽂件,若没有脚本⽂件,将覆盖脚本。
脚本:传递给JSR223执⾏的脚本,编写代码。
查看jmeter变量信息:
点击右上⾓三⾓按钮。调⽤logview窗⼝,来查看变量信息。
1、log
⽤法:写⼊⽇志⽂件。在编写测试计划脚本时进⾏调试⾮常有⽤。
⽇志有3个级别:info、warn和error。根据需要可以使⽤相应级别的⽇志。
注意:有错误级别的⽇志时,右上⾓的三⾓形状态将增加1。
2、OUT
⽤法:在控制台中打印消息。与log的区别是显⽰消息的位置不⼀样。
注意:在groovy语句下,也可不写OUT,只⽤println⽅法也可打印信息显⽰在控制台。
3、vars
3.1 提供read(get)/write(put)⽅法去访问变量。
变量包括:⽤户⾃定义、Regex提取器提取、JSON提取器从响应数据中提取等。
读⽅法:(“VARIABLE_NAME”);
写⽅法:vars.put(“VARIABLE_NAME”,“VALUE”);
写⼊后,可以访问role_id。
3.2 提供对象、数组的访问。
⽅法:Object(“OBJECT_NAME”);
vars.putObject(“OBJECT_NAME”, OBJECT_NAME);
例⼦:jsr1:定义⼀个函数作为对象:
jsr2:调⽤函数对象:
4、props
⽤法:与vars相同,但⽤于JMeter属性。vars仅作⽤于当前线程。props作⽤于多线程。⽅法:(“PROPERTIES_NAME”);
少年中国歌词props.put(“PROPERTIES_NAME”, PROPERTIES_NAME);
例⼦:读取线程中属性值。
读取属性值⽤法如下。当然,也可以采⽤函数${_setProperty(newprops,new_props)}⽅法来实现下⾯的语句。
属性列表查看:
设置完属性后,可⽤__P()或者__property()函数来访问。
引⽤的属性值:
props是Hastable的⼦类,因此我们可以使⽤put来存储Object、List、Map等。我们可以在⼀个线程组中创建⼀个函数,使⽤props.put()⽅法存储,然后在另⼀个线程组中使⽤()调⽤它。(注意区分,vars使⽤的调⽤其他⽅法函数是Object()和vars.putObject())。
5、SampleResult
⽤法:SampleResult帮助获取/设置运⾏后样本的值,例如:ResponseCode、ResponseMessage、StartTime、SampleLabel等。
注意:如果脚本中直接使⽤SampleResult类型,需要先导⼊ org.apache.jmeter.samplers.SampleResult类。
⽅法:主要包括get和put⽅法:
6、prev
⽤法:prev是内置对象,与SampleResult的作⽤相同,SampleResult中的所有⽅法都可以通过prev.来调⽤。运⾏后可以获取/设置样本的⼏乎所有信息。jmeter默认会初始化SampleResult类。
prev对象可以直接引⽤SampleResult类中的⽅法,不需要导⼊。
即下⾯两段代码效果⼀致。
import org.apache.jmeter.samplers.SampleResult;
// 获取取样器结果
SampleResult result = PreviousResult();
// 获取请求头
String RequestHeaders =RequestHeaders();
// 获取请求头
String RequestHeaders =RequestHeaders();
⽅法get:
prev.isSuccessful()
注意:ResponseDataAsString()与ResponseData()都是获取Response Body的内容,只是返回的数据类型不
同,ResponseDataAsString()返回String字符串,ResponseData()返回byte[]字节数组,
使⽤时可根据实际需要对返回数据进⾏处理。
几处早莺争暖树 谁家新燕啄春泥⽅法set:
与get⽅法相同,我们可以访问采样器的所有信息并根据需要设置值。
prev.setResponseCode();//设置返回代码
prev.setResponseMessage();//设置返回信息
prev.setSampleLable();//设置样品标签
prev.setSuccessful();//设置相应是否成功
日的时候说的话有哪些7、sampler
⽤法:允许访问当前采样器。这意味着我们可以在运⾏之前获取/设置采样器的⼀些信息,例如:域、路径、端⼝、协议、⽅法
⽅法:get/set⽅法。
8、ctx
⽤法:助于访问上下⽂。使⽤ctx我们可以获得⼀些信息,⽐如SampleResult或prev,但是它的级别更⾼。ctx 映射为
org.apache.jmeter.threads 的 JMeterContext 类。由于JMeterContext 不具有线程安全性,故仅适⽤于在单线程中使⽤。
⽅法:
getPreviousResult()//获取前⼀个取样器结果
举例:
// 获取取样器结果,返回累⼼为SampleResult
SampleResult result = PreviousResult();
// 获取请求头
个人所得税怎么退
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论