遇到的问题:
在一次做接口测试的时候,需要获取签名作为下一个接口的入参,但是这个签名没法通过接口获得,只是内部之间方法调用
解决方案:
1.让开发写一个接口给你用于获取签名
2.直接用Jmeter的java request
具体操作步骤:
1.引用需要的依赖包(因为我用的jmeter是3.2版本的,所有这里引用3.2版本)
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_core</artifactId>
<version>3.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.jmeter/ApacheJMeter_java -->
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_java</artifactId>
<version>3.2</version>
</dependency>
2.重写jmeter里面的方法
package javatest;
import java.util.Random;
import javatest.Test;
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;
public class MyJavaRequest extends AbstractJavaSamplerClient {
//要测试的方法中需要传多少参数,这里就设置多少
private static String a;
private static String b;
private String response;
@Override
public Arguments getDefaultParameters() {
Arguments params = new Arguments();
params.addArgument("String1", "String1.value");
params.addArgument("String2", "String2.value");
return params;
}
@Override
public void setupTest(JavaSamplerContext arg0) {
//获取Jmeter界面输入的值
a = arg0.getParameter("String1");
b = arg0.getParameter("String2");
}
public SampleResult runTest(JavaSamplerContext context) {
SampleResult results = new SampleResult();
results.setSampleLabel("test speed of print something");
Random r = new Random();
try {
//事务开始
results.sampleStart();
System.out.println(a + " " + b);
//调用需要测试的JAVA方法
response=Test.Method(a, b);
Thread.sleep(r.nextInt(100));
results.setSuccessful(true);
}catch(Exception e) {
results.setSuccessful(false);
e.printStackTrace();
}finally {
//事务结束
results.sampleEnd();
}
//设置jmeter输出的返回值
results.setResponseData(response,null);
return results;
}
@Override
public void teardownTest(JavaSamplerContext arg0) {
System.out.println("test is over");
}
}
3.把项目打成jar包,并将包放到
j
m
e
t
e
r
h
o
m
e
/
l
i
b
/
e
x
t
/
目
录
下
。
如
还
需
要
依
赖
第
三
方
j
a
r
,
需
要
将
第
三
方
的
j
a
r
也
放
到
{jmeter_home}/lib/ext/目录下。如还需要依赖第三方jar,需要将第三方的jar也放到
jmeterhome/lib/ext/目录下。如还需要依赖第三方jar,需要将第三方的jar也放到{jmeter_home}/lib/ext/目录下
4.重新运行Jmeter-----然后在jmeter就可以直接请求JAVA方法了
中间遇到的问题:jmeter就是拿不到运行结果,然后我在eclipse里写了main方法调用了下,报错unsupported major.minorversion52.0,后来把工程中默认Java版本换成了1.8解决了
总结:不需要动开发的任何东西,把他的工程打成JAR包,引用到测试的工程中,按照上面的操作步骤就可以获得JAVA方法的返回值了,也就不用单独写接口了