JMeter引入外部java文件

一、引用外部java文件: 

1、假如我有一个java 源文件,名为:Myclass.java,代码如下:   

复制代码

package test; 
 
public class Myclass 
{ 
    public int add(int a, int b) 
    { 
        return a + b; 
    }     
} 

复制代码

2、Bean Shell使用代码如下: 

  在bean shel中通过source("代码路径")方法引入java,然后调用方法和java一样,new一个class,再调用里面的add 方法。 

Test Plan 
Thread Group 
BeanSheI Sampler 
Debug Sampler 
View Resuts Tree 
Workaench 
BeanShell Sampler 
Name: BeanShell Sampler 
Comments: 
Reset bsh.lnterpreterbefore each call 
Parameters String Parameters and String Obsh.args) 
Script (see below for variables that are defined) 
source( "D: x XMycIass . java"); 
/iۊ*k-, 
int res 
— new Myclass 
o. 
add (3, 8) ; 
ars . put(" add" , res . toString

3、运行结果: 

BeanShell Sampler 
JMeterVariaOles 
JMeterThread last_sample_ok=true 
JMeterThread apache jmeterthreads Sample 
START HMS=202050 
START LIS=14475g0050864 
STARTYMO=20151115 
TESTSTARTLlS=14475g02g4438

二、引用外部class文件: 

  现在知道如何引用外部文件,有时候如果我们只有class文件怎么办呢?其实在jmeter中也可以直接引用class文件,示例如下: 

1、直接把上例中的java文件编译成class文件,如何编译请自行百度。 

2、Bean Shell使用代码如下: 

  用addClassPath("D:\\")方法引入 class文件,再用import导入包及类,然后就可以像java一样调用了 

Test Plan 
Thread Group 
BeanSheH Sampler 
Debug Sampler 
View Resuts Tree 
Workaench 
BeanShell Sampler 
Name: BeanShell Sampler 
Comments: 
C] Reset bsh.lnterpreterbefore each call 
Parameters String Parameters and String Obsh.args) 
Script file 
/ 9" Act ass r 
addCIassPath ( "D: \ V' ) ; 
impcwt test.MycIass; 
int res 
10 
11 
— new Myclass() .add 
vars . put(" add" , res . toString

3、运行结果: 

BeanShell Sampler 
Debug 
JMeterVariaOles 
JMeterThread last_sample_ok=true 
J MeterThread apachejmeterthreadsSamplePackage@f35a38 
START HMS=202050 
START LIS=14475g0050864 
STARTYMO=20151115 
TESTSTARTHS=14475g1327688

  

三、引用外部Jar包: 

  上面一、二介绍了如何引用外部java和class文件,如果文件比较多时我们可以把它们打成一个jar包然后在jemter中调用 

  在这里想补充一点的是jmeter中引入jar的方法: 

  1、上一篇中已使用过的:把jar包放到jmeter目录\apache-jmeter-2.13\lib\ext下 

  2、在Test Plan的右侧面板最下方直接添加需要引用的jar包,如下图: 

  

Add directory or jar to classpath 
Brow 
Delete 
Library 
1310inApacheJMeter jar

 

四、其它用法:  

1、在Test Plan中定义如下三个变量: 

User Defined Variables 
Name: 
Value

2、Bean Shell可脚本如下: 

  a、bean shell可以接受传入参数,如下图:${u1} ${u2} ${u3} 

  b、参数可以通过bsh.args[]按顺序提取 

  c、bean shell提供了一个内置变量Parameters,来保存参数的集合 

Test Plan 
Thread Group 
BeansheU sampler123 
Debug Sampler 
View Resuts Tree 
Workaench 
BeanShell Sampler 
Name: BeanShell Sampler 123 
Comments: 
Reset bsh.lnterpreterbefore each call 
Parameters String Parameters and String Obsh 
Script file 
Script (see below for variables that are defin 
gs) S{ul) S{u2) S{u3} 
13 
vars . put( "VI" , bsh. ) ; 
ars . , argsCI)); 
ars . , bsh.argsC2)); 
ars . put( "v4" 
, Parameters) ; 
log. info( Parameters) ; 
/ * *lame 
log. info( Label) ; 
ResponseCode = 
'This is a test"; 
Responsemessage 
= false; 
IsSucces 
ampleResuIt. world");

3、运行结果: 

Request 
BeanShell Sampler 
Sampler result 
JMeterVariaOles 
Response data 
JMeterThread last_sample_ok=true 
J MeterThread apachejmeterthreadsSamplePackage@cf71 as 
START HMS=202050 
START LIS=14475g0050864 
STARTYMO=20151115 
147g 
u 1=111 
VI-Ill 
v4=111 222 333

下图中1输入的这两句设置: 

ResponseCode = 500; 
ResponseMessage = "This is a test"; 

下图中2输入的这两句设置: 

log.info(Parameters); 

log.info(Label); 

Text 
BeanShell Sampler123 
Debug Sampler 
Sampler result 
Latency O 
Size in bytes: 11 
Request 
Response data 
Headers size in bytes: O 
Body size in bytes: 11 
Sample Count 1 
Error Count: 0 
Response co e: 
Response message: This is a test 
Response headers 
- jmeter. engine. Standard]MeterEngine: Thread will continue on error 
- jmeter.threads. ThreadGroup: Starting thread group number I threads I ramp-up I 
- jmeter.threads. ThreadGroup: Started thread group number I 
- jmeter. engine. Standard]MeterEngine: All thread groups haue been started 
- jmeter.threads. JMeterThread: Thread started: Thread Grou 1-1 
- jmeter. util. BeanSheIITestEIanen 
2 
- jmeter. util. BeanSheIITestEIanen 
BeanSheII Sampler123 
- jmeter.threads. JMeterThread: Thr 
- jmeter.threads. JMeterThread: Thread finished: Thread Group I-I 
- jmeter. engine. Standard]MeterEngine: Notifying test listeners of end of test 
- jmeter. gui. util. JMeterMenu8ar:

  

//获取参数传递过来的值并存入变量中 

vars.put("v1",bsh.args[0]);  

vars.put("v2",bsh.args[1]);  

vars.put("v3",bsh.args[2]);  

获取参数传递过来的变量集合 

vars.put("v4",Parameters);  

//输出该元件的name 

log.info(Parameters); 

log.info(Label);  

//设置响应代码 

ResponseCode=500; 

//设置响应信息 

ResponseMessage="This is a test"; 

//设置是否成功 

IsSucces=false; 

//设置响应数据 

SampleResult.setResponseData("Hello world"); 

posted @ 2017-11-28 13:23  春田花花同学会  阅读(4801)  评论(1编辑  收藏  举报