1.maven中引入jmeter包
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_core</artifactId>
<version>5.0</version>
</dependency>
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_java</artifactId>
<version>5.0</version>
</dependency>
- 编写脚本
package com;
// import com.google.gson.Gson;
// import com.GsonUtil;
// import org.apache.commons.collections.MapUtils;
// import org.apache.commons.lang.RandomStringUtils;
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;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.*;
/**
* Created on 2019/12/9.
*/
public class forJMtest extends AbstractJavaSamplerClient {
int num = 0;
Logger logger = LoggerFactory.getLogger(forJMtest.class);
private String paramInput;
String ApiImplCode;
String ldc;
Api****Service service = null;
File fs = null;
Scanner sc = null;
String images = null;
List sb = new ArrayList();
// List jsons = new ArrayList();
// List json2 = new ArrayList();
// String nums ;
public forJMtest() throws FileNotFoundException {
}
public Arguments getDefaultParameters() {
// 设置默认参数
Arguments args = new Arguments();
args.addArgument("ApiImplCode", "picsearch_shopping");
args.addArgument("paramInput", "file_pic_path");
args.addArgument("ldc", "XXXX");
return args;
}
@Override
public void setupTest(JavaSamplerContext context) {
this.logger.info("enter setupTest");
this.paramInput = context.getParameter("paramInput");
this.ldc = context.getParameter("ldc");
System.setProperty("ldc", this.ldc);
super.setupTest(context);
fs = new File(this.paramInput);
try {
sc =new Scanner(fs);
while (sc.hasNext()) {
sb.add(sc.next());
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
this.ApiImplCode = context.getParameter("ApiImplCode");
ServiceLocator.lazyInitAgent = false;
this.service = ServiceLocator.getService("com.***.api.***.service.*******Service",this.ApiImplCode);
}
public SampleResult runTest(JavaSamplerContext javaSamplerContext) {
String strs="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
Random random=new Random();
StringBuffer sbs=new StringBuffer();
for(int i=0;i<32;i++){
int number=random.nextInt(62);
sbs.append(strs.charAt(number));
};
String str = "{\n" +
" \"picUrl\": \"picture\",\n" +
" \"picBase64\": \"\",\n" +
" \"picType\": \"Type_URL\",\n" +
" \"msgId\": \""+sbs.toString()+"\"\n" +
"}";
num = num%(sb.size())+1;
this.images= str.replaceAll("picture",(String)sb.get(num-1));
// this.logger.info("第请求参数: " + this.images);
SampleResult sr = new SampleResult();
sr.setSuccessful(true);
sr.sampleStart();
try {
String result = service.execute(this.images);
sr.setResponseData(result, "utf8");
this.logger.info("result:" + result);
} catch (ServiceException ex) {
sr.setSuccessful(false);
sr.setResponseData("业务异常", "utf8");
this.logger.error("业务异常", ex);
} catch (ExceedActiveLimitException ex) {
sr.setSuccessful(false);
sr.setResponseData("超出控制方消费阈值", "utf8");
this.logger.error("超出控制方消费阈值", ex);
} catch (InvalidAccessException ex) {
sr.setSuccessful(false);
sr.setResponseData("消费方无权限访问该服务", "utf8");
this.logger.error("消费方无权限访问该服务", ex);
} catch (ExceedRetryLimitException ex) {
sr.setSuccessful(false);
sr.setResponseData("超出重试次数,调用失败,请求明细异常", "utf8");
this.logger.error("超出重试次数,调用失败,请求明细异常" + ex.getExceptions());
if (ex.exceedConcurrencyThreshold()) {
this.logger.error("超出服务方流控阈值", ex);
}
} catch (TimeoutException ex) {
sr.setSuccessful(false);
sr.setResponseData("调用超时", "utf8");
this.logger.error("调用超时", ex);
} catch (***Exception ex) {
sr.setSuccessful(false);
sr.setResponseData("其他框架异常", "utf8");
this.logger.error("其他框架异常", ex);
}
sr.sampleEnd();
return sr;
}
}
3.打包:
(1).mvn clean install -Dtest -DfailIfNoTests=false -Dmaven.javadoc.skip=true
(2).mvn assembly:assembly (打依赖包需要注释掉 pom文件中jmeter的依赖.)
将打好的jar包放入jmeter /lib/ext 目录下.
4.打开jmeter 创建线程组-添加java请求