因工作需要,需在jmeter中,通过jdbc取出相应id,然后将id存入文件中,查询网上的资料,基本是通过beanshell来实现:
1.操作变量
2.操作属性
3.自定义函数
4.引用外部java文件
5.引用外部class文件
6.引用外部Jar包
7.其它用法(接受参数, log等)
(—–引用自)

本文主要介绍我最近掌握的几种方法:
- 导入jar、使用java请求
- 直接写函数
- 导入java文件
- 导入class文件

导入jar、使用java请求

导入jar需将方法导出为jar包,并将其复制到jmeter下的lib\ext中,具体方法可百度

以下是导入jar时需要注意的(我使用过程中遇到的注意点)
1.在测试计划中添加包地址

beanshell打印source的java beanshell执行java_jmeter


2.beanshell中,需导入该包


beanshell打印source的java beanshell执行java_java_02

3.java类中,继承AbstractJavaSamplerClient类或实现JavaSamplerClient接口的测试类的类名都会出现在类名称后面的下拉框中,JaveTest和SleepTest为jmeter默认实现的2个java请求Sampler。

直接写函数

写函数时,需注意:

1.函数中调用jmeter参数时,需加引号

2.最后需调用一下需运行的方法

beanshell打印source的java beanshell执行java_java_03

导入java文件

导入java时,网上查了很多资料,导入java文件时,地址是双斜杠间隔,

beanshell打印source的java beanshell执行java_java文件_04


但试了不行,后来试了反斜杠“/”,可以了;

beanshell打印source的java beanshell执行java_java_05


我这个脚本,因为有for循环,运行时,第一个循环是通的,但后面的循环提示wr是已存在变量,还没找到解决问题的方法,忘大神请教!

beanshell打印source的java beanshell执行java_java_06

导入class文件

导入class文件类似java文件,唯一不同的是,

1.source写地址时,仅需写到地址盘,文件无需放在跟目录,仅需要在地址盘中即可

2.需import类的名字

beanshell打印source的java beanshell执行java_斜杠_07


此处java和class内容一样,我原本以为运行导入class文件也会和导入java的文件出现一样的问题,但是导入class文件却全部成功了,不知道为啥,望大神指导。

总结

1.在BeenShell中引用文件路径时不要使用”\”,否者会转义成ASCII码,当你需要表示完整的路径时应该如此表示E:/ZipUtil.java,而不是像java中引用E:\ZipUtil.java,这样就会将Z分别转码成90然后jmeter控制台就会报错(这个是在网上查的说法,在写脚本的时候,很多文章中地址都是双斜杠”\”,但实际运行时却运行不通,后来无意间修改为”\\”,尽然成功了,看jmeter运行解析后是“\”的地址,想着是不是解析的时候是以”\”解析,会去掉一个斜杠的。后来发现反斜杠”/”也是可以成功的)

beanshell打印source的java beanshell执行java_斜杠_08


应使用了“CSDN-markdown编辑器”,双斜杠会去掉一个斜杠,因此这截图显示,以防表达有误。

2.引用外部参数时,引号是必须,在BeenShell中引用外部参数需要以String类型的方式引用。但在导jar包和java请求中引用参数时,是不需要引号的,默认为String类型的