手把手教学Jmeter之BeanShell+自己编写第三方jar包(含实例)

##...因为公司要求发报文,而前面接受到的报文含有一串十六进制的数需要在下一个报文用做文本数据。如果只是这样的话,一个正则提取器加BeanShell就可以完成了,关键是有一个校验和需要根据整个报文来计算,所以还是需要自己写函数来计算校验和,重新生成报文。今天总算把大体的流程报文都发了一遍。

 

流程:1.签到报文->2.xx报文->返回yy报文->3.加上yy报文的数据的zz报文

需要用到自己写的函数就是在取yy报文放到zz报文里,重新计算校验和并生成新的报文的时候。

我在编写自己的jar包的时候遇到的问题就是,不知道为什么如果是 Maven工程,你打包出来在Jmeter里是用不了的。如果有大神可以解惑请在评论告诉我..

2019-01-24 18:08:32,380 ERROR o.a.j.u.BeanShellInterpreter: Error invoking bsh method: eval	Sourced file: inline evaluation of: ``GenData gg=new GenData();'' : Typed variable declaration : Class: GenData not found in namespace

会报这样的错误。顾名思义就是jar包没有引用上。

jar包引用的方法有三种:

第一种:在测试计划的右下角可以添加

手把手教学Jmeter之BeanShell+自己编写第三方jar包(含实例)

这里可以添加。

第二种方法:直接把第三方jar包放到lib目录或者lib/ext目录下即可.

手把手教学Jmeter之BeanShell+自己编写第三方jar包(含实例)

第三种方法:在jmeter.properties中设置

手把手教学Jmeter之BeanShell+自己编写第三方jar包(含实例)

手把手教学Jmeter之BeanShell+自己编写第三方jar包(含实例)

如图,就是我在bin目录的上一级建立一个dependencies目录,专门用来放第三方jar包.

 

再顺便说一下Jmeter怎么看日志文件。

手把手教学Jmeter之BeanShell+自己编写第三方jar包(含实例)

这样设置就可以查看日志文件了,在使用后面的beanshell的时候,如果需要查看beanshell里面的数据,可以使用log.info("xxx")来查看数据.

BeanShell的使用:

我只说几个我用到了的吧。

将数据放到jmeter变量中:

vars.put("xxx",yyy);   //将yyy数据以xxx命名存在Jmeter里
vars.get("zzz");    //取出zzz的数据

将上一个报文得到的数据拿到:

String tt=prev.getResponseDataAsString();   

 

接着是BeanShell的语法:将我的实例放出来就可以了.

手把手教学Jmeter之BeanShell+自己编写第三方jar包(含实例)

这是java代码:

手把手教学Jmeter之BeanShell+自己编写第三方jar包(含实例)

还有生成报文的就不放出来了,涉及公司隐私..

第三方打包方法:亲测成功

项目的话我只试了EJB

然后打包方法是直接Export->JAR file  

然后选中自己的项目,Finish就可以了。