zoukankan      html  css  js  c++  java
  • jmeter之 java请求

    在我所接触的jmeter脚本编写中,接触到的的最多的取样器就是http取样器,但是如果用来测试rpc等就不合适了,看网上的资料发现了java请求的魅力,就总结下java请求的编写吧

    1.导入包到工程,将jmeterlib下的所有jar包,尤其是ext中的ApacheJMeter_core.jar,ApacheJMeter_java.jar都是必须的,这是保险起见

     2.编写class文件

    package wuchun;


    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;

     //这四个包就在我们刚才导入的jmeter jar包中

    public class Test extends AbstractJavaSamplerClient {

    private static long start = 0;

    private static long end = 0;

    private String id = "0";

    @Override

    public Arguments getDefaultParameters() {

    //可选,定义可用参数及默认值

    Arguments args = new Arguments();

    args.addArgument("id", "123456789"); // 添加默认参数及对应值 //参数名称:id 参数值:123456789

    return args;

    }


    @Override

    public SampleResult runTest(JavaSamplerContext context) {
    // 必选,定义线程运行的请求
    String id = context.getParameter("id");

    SampleResult sr = new SampleResult(); // 为避免多线程问题,设置sr为局部变量

    sr.setSampleLabel("request1"); // 设置采样标签,对应GUI 聚合报告里的Label值

    try {

    //Start

    sr.sampleStart(); // 开始统计响应时间,取样器开始运行

    // TODO

    System.out.println(id);


    sr.setSamplerData("id="+id);//设置请求的数据,在查看结果树中可以看到

    sr.setResponseData("id="+id, "utf-8"); //设置响应的数据第一个参数 设置JMeter GUI "查看结果树" 请求对应的"响应数据" // 执行压测前 建议注释掉,第二个参数 为编码, 设置JMeter GUI "取样器结果" DataEncoding: utf-8 // 第二个参数为 "", 则表示默认为 GBK编码

    sr.setDataType(SampleResult.TEXT); // 设置JMeter GUI "取样器结果" Data type ("text"|"bin"|""):text

    sr.setResponseMessageOK(); // 设置JMeter GUI "取样器结果" Response message: OK

    sr.setResponseCodeOK(); // 设置JMeter GUI "取样器结果" Response code: 200

    } catch (Exception e) {

    sr.setSuccessful(false);//设置请求失败

    sr.setResponseMessage("server error"); // 设置JMeter GUI "取样器结果" Response message: server error

    sr.setResponseCode("500"); // 设置JMeter GUI "取样器结果" Response code: 500

    e.printStackTrace();

    } finally {

    // End

    sr.sampleEnd();//设置取样器结束运行

    }

    return sr;

    }


    @Override

    public void setupTest(JavaSamplerContext context) {

    // 开始时间
    System.out.println("setup....");
    start = System.currentTimeMillis();

    }

    @Override

    public void teardownTest( JavaSamplerContext context){

    // 结束时间
    System.out.println("teardown....");
    end = System.currentTimeMillis();

    // 总体耗时

    System.err.println("cost time:" + (end - start) / 1000);

    }

    }其中重要的就是这几个方法

    public Arguments getDefaultParameters();可选,定义可用参数及默认值;  
              public void setupTest(JavaSamplerContext arg0):可选,测试前执行,做一些初始化工作;  
              public SampleResult runTest(JavaSamplerContext arg0);必选,实现自定义请求;  
              public void teardownTest(JavaSamplerContext arg0):可选,测试结束时调用;

     3.将上述打jar包,并放入libext中

    4.重启jmeter,添加java请求,设置如下

     

    5.运行,结果如下

     

     

     

    总结:java请求更为灵活,可以自定义请求的内容,其中重要的就是四个方法,请求和返回可以自定义,参数也可以结合jmeter进行参数化

  • 相关阅读:
    time,implicitly_wait,WebDriverWait三种等待方式
    iframe,window,alert切换
    pandas
    TestCase,Testsuit,TestLoder,TextTestRunner实现对测试用例全部执行或部分执行
    静态,类,实例,冒泡
    configparser读取
    ddt,data,unpack用法
    mybatis入门教程之搭建一个简单的mybatis项目并启动它
    修改hosts文件后不生效,该怎么办
    在JavaScript种遇到这样的错误如何解决XML 解析错误:格式不佳 位置:http:/... 行 27,列 32:
  • 原文地址:https://www.cnblogs.com/diwangguilai/p/12050787.html
Copyright © 2011-2022 走看看