zoukankan      html  css  js  c++  java
  • Jmeter AbstractJavaSamplerClient 案例

    1:首先到apache-jmeter-3.0libext目录下引用以下两个jar包到Java工程里面

    ApacheJMeter_core.jar

    ApacheJMeter_java.jar

    2:新建一个测试类继承AbstractJavaSamplerClient 并实现Serializable 接口,例如:

    public class Ssfwpttest extends AbstractJavaSamplerClient implements Serializable {
    
        private static final long serialVersionUID = 1L;
    
        //设置GUI页面显示的变量名称
        private static final String URL_NAME = "URL";
        private static final String URLVALUE_DEFAULT = "https://xx";
        //resultData变量用来存储响应的数据,目的是显示到查看结果树中。
        private String resultData;
    
        private List<String> nsrsbhList = new ArrayList<String>();
    
        @Override
        public Arguments getDefaultParameters() {
            Arguments arguments = new Arguments();
            arguments.addArgument(URL_NAME, String.valueOf(URLVALUE_DEFAULT));
            return arguments;
        }
    
        @Override
        public void setupTest(JavaSamplerContext context) {
            nsrsbhList.clear();
            
            try {
                File file = new File("D:\dj_nsrxx.xml");
                SAXReader reader = new SAXReader();
    
                Document doc = reader.read(file);
    
                Element rootElement = doc.getRootElement();
    
                List<Element> nsrs = rootElement.elements();
    
                Iterator<Element> iter = nsrs.iterator();
    
                while (iter.hasNext()) {
                    Element row = iter.next();
    
                    Element nsrsbh = row.element("NSRSBH");
    
                    nsrsbhList.add(nsrsbh.getTextTrim());
                }
                
            } catch (DocumentException ex) {
                Logger.getLogger(Ssfwpttest.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    
        @Override
        public SampleResult runTest(JavaSamplerContext jsc) {
            int begin = 0;
            int end = nsrsbhList.size()-1;
            Random random = new Random();
            int index = random.nextInt(end)%(end-begin+1) + begin;
            String nsrsbh = nsrsbhList.get(index);
            nsrsbhList.remove(nsrsbh);//使用过了就移除,避免出现重复
            
            /*
             * SampleResult这个类是用来将测试结果输出到查看结果树中的。  
             * 并且也是用来控制事务的开始和结束的。  
             */
            SampleResult results = new SampleResult();
            results.setSampleLabel(nsrsbh+"=>"+URLVALUE_DEFAULT);
            results.sampleStart();
    
            //请求参数需要动态设置
            
            try {
                resultData = HttpsUtils.post(URLVALUE_DEFAULT, header, param, null);
    
                if (null != resultData) {
                    JsonObject obj = new JsonParser().parse(resultData).getAsJsonObject();
                    if (null != obj) {
                        String code = obj.get("code").getAsString();
                        if (code.equals("0")) {
                            results.setSuccessful(true);
                        }
                    }
                }
            } catch (Exception e) {
                //如果发生异常,则捕捉,并且发送事务失败的消息。
                results.setSuccessful(false);
                //e.printStackTrace();
            } finally {
                //标记事务结束
                results.sampleEnd();
            }
    
            //将数据打印到查看结果树当中
            results.setResponseData(resultData, null);
            results.setDataType(SampleResult.TEXT);
    
            return results;
        }
    }

    3:将项目打包复制到apache-jmeter-3.0libext目录

  • 相关阅读:
    美化的滚动条
    网站系统开发参考网址
    正则表达式获取URL参数
    类实例 及 实例化对象 对象引用
    C# 静态方法 静态属性 调用静态方法
    C# 静态方法调用非静态方法
    winform 窗体间传值
    从数据库中读出数据并输出
    数据库链接字符串
    DbHelper
  • 原文地址:https://www.cnblogs.com/yshyee/p/8073621.html
Copyright © 2011-2022 走看看