BeanShell Sampler
BeanShell Sampler可以自由实现想要的功能。
BeanShell是一种脚本语言,jmeter还提供了其他脚本语言的Sampler比如JSR223 Sampler,都可以达到相同的效果,在这里我只介绍BeanShell(因为我比较熟悉…),如果有其他同学熟悉其他语言,不一定非要使用BeanShell的。后面涉及的BeanShell PreProcessor,BeanShell PostProcessor,BeanShell断言都是基于同样的原因只介绍一种。
BeanShell官网:
http://www.beanshell.org/
属性 | 描述 | 备注 |
---|---|---|
参数 | 引用参数, Parameters: 单个的String参数, bsh.args: String数组,以空格分隔 | |
脚本文件 | 可以将脚本保存到一个文件中,然后直接在这声明使用 | 与下面的Script是冲突的,只能选择一种方式来存放脚本 |
Script | BeanShell脚本 | 不能为空;前提是没有Script file |
常用内置变量
1. vars: 操作Jmeter变量,详见
http://jmeter.apache.org/api/org/apache/jmeter/threads/JMeterVariables.html
e.g.
1) vars.get(“name”):从jmeter中获得变量值
2) vars.put(“key”,”value”):保存数据到jmeter变量中,如果变量不存在会自动创建
2. props: 操作Jmeter属性
1) props.get(“START.HMS”); 注:START.HMS为属性名
2) props.put(“PROP1”,”1234”); 保存数据到Jmeter属性中,如果属性不存在会自动创建
3. log: 记录日志
比如log.info(“日志信息”);
具体查看: https://www.slf4j.org/api/org/slf4j/Logger.html
4. Parameters
当参数值只有一个变量时,可以直接用Parameters获取变量值
5. bsh.args
当参数有多个变量时使用,e.g: bsh.args[0]
6. SampleResult
当前Sample结果方法,具体:
http://jmeter.apache.org/api/org/apache/jmeter/samplers/SampleResult.html
7. ResponseCode
响应码,默认是 200,
8. ResponseMessage
响应信息,默认是“OK”
9. IsSuccess
判断请求是否成功,默认是“true”
10. ctx - JMeterContext
请求上下文,具体查看:
http://jmeter.apache.org/api/org/apache/jmeter/threads/JMeterContext.html
11. 引用外部java文件
source(“D:\testdata\Add.java”);
引用后可以调用Add.java中的方法,属性等
12. 引用外部class文件
addClassPath(“D:\”); //设置class path
import test.Test.class; // import 类
之后就像java一样调用了
(个人觉得这个不怎么实用,引用class不如引用源码,更方便之后的修改,如果class是其他人提供的,当我没说。。。)
13. 引用外部 jar包
在测试计划中添加需要的jar包
(这里用到的fastjson 是用来处理Json的)代码中import(与java一样使用)