jmeter+java request实践

遇到的问题:
在一次做接口测试的时候,需要获取签名作为下一个接口的入参,但是这个签名没法通过接口获得,只是内部之间方法调用
解决方案:
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/jarjar{jmeter_home}/lib/ext/目录下
4.重新运行Jmeter-----然后在jmeter就可以直接请求JAVA方法了
中间遇到的问题:jmeter就是拿不到运行结果,然后我在eclipse里写了main方法调用了下,报错unsupported major.minorversion52.0,后来把工程中默认Java版本换成了1.8解决了

总结:不需要动开发的任何东西,把他的工程打成JAR包,引用到测试的工程中,按照上面的操作步骤就可以获得JAVA方法的返回值了,也就不用单独写接口了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值