jmeter java请求
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 java.util.ArrayList; import java.util.List; import org.apache.http.Consts; import org.apache.http.NameValuePair; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.message.BasicNameValuePair; public class test extends AbstractJavaSamplerClient{ //设置传入的参数,可以设置多个,已设置的参数会显示到Jmeter的参数列表中 public Arguments getDefaultParameters() {//必要项,不能省略 Arguments args = new Arguments(); args.addArgument("address", "http://mock-api.com/Vdno8oKX.mock/adduser");//无参数可省略,第二项为默认参数,可省略 args.addArgument("username","user1");//无参数可省略,第二项为默认参数,可省略 args.addArgument("password", "111111");//无参数可省略,第二项为默认参数,可省略 return args; } //初始化方法,实际运行时每个线程仅执行一次,在测试方法运行前执行 public void setupTest(JavaSamplerContext context) {//可以省略,去掉本项后可同时去掉全局变量 SampleResult sampleResult = new SampleResult(); String address = context.getParameter("address"); //获取在Jmeter中设置的参数值,检测不为空 if (address != null && address.length() > 0) { sampleResult.setSamplerData(address); } String username = context.getParameter("username"); //获取在Jmeter中设置的参数值,检测不为空 if (username != null && username.length() > 0) { sampleResult.setSamplerData(username); } String password=context.getParameter("password");//获取在Jmeter中设置的参数值,检测不为空 if (password != null && password.length() > 0) { sampleResult.setSamplerData(password); } } //测试执行的循环体,根据线程数和循环次数的不同可执行多次 @Override public SampleResult runTest(JavaSamplerContext context) { SampleResult sampleResult = new SampleResult(); String address = context.getParameter("address");//获取参数值,可在GUI页面进行参数化 String username = context.getParameter("username");//获取参数值,可在GUI页面进行参数化 String password = context.getParameter("password");//获取参数值,可在GUI页面进行参数化 sampleResult.sampleStart(); //事务的起点,必选项 try { List<NameValuePair> formparams = new ArrayList<NameValuePair>(); formparams.add(new BasicNameValuePair("username", username));//使用username参数 formparams.add(new BasicNameValuePair("password", password));//使用username参数 UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formparams, Consts.UTF_8); HttpPost httppost = new HttpPost(address);//使用address参数 httppost.setEntity(entity); sampleResult.setResponseData(httppost.getURI().toString(),"");//设置返回消息,注意第二个参数必须这么写,可忽略 sampleResult.setResponseMessageOK();//成功的Message,可忽略 sampleResult.setSuccessful(true); //设置本次事务成功,必选项 } catch (Exception e) { sampleResult.setResponseMessage("Error:"+e.toString());//错误信息,可忽略 sampleResult.setResponseData("Error:"+e.toString(),"");//设置返回消息,打印错误到GUI,注意第二个参数必须这么写,可忽略 sampleResult.setSuccessful(false); //设置本次事务失败,必选项 }finally{ sampleResult.sampleEnd();//事务的终点,必选项 } return sampleResult; } //结束方法,实际运行时每个线程仅执行一次,在测试方法运行结束后执行 public void teardownTest(JavaSamplerContext context) {//可以省略 } // public static void main(String[] args) {//导出jar包前,必须、必须、必须屏蔽main函数,否则无法使用 // System.out.println("test");//jmeter不支持System.out.println,导出jar包前需要屏蔽掉 // test test = new test(); // test.setupTest(null); // test.runTest(null); // } }