zoukankan      html  css  js  c++  java
  • jmeter添加自定义扩展函数之if判断

    1,打开eclipse,新建maven工程,在pom中引用jmeter核心jar包,具体请看---https://www.cnblogs.com/guanyf/p/10863033.html---,这里就不再赘述

    2,代码如下:

      1 package com.mytest.functions;
      2 
      3 
      4 
      5 import org.apache.jmeter.engine.util.CompoundVariable;
      6 
      7 import org.apache.jmeter.functions.AbstractFunction;
      8 
      9 import org.apache.jmeter.functions.InvalidVariableException;
     10 
     11 import org.apache.jmeter.samplers.SampleResult;
     12 
     13 import org.apache.jmeter.samplers.Sampler;
     14 
     15 import org.apache.jmeter.threads.JMeterVariables;
     16 
     17 
     18 
     19 import java.util.Collection;
     20 
     21 import java.util.LinkedList;
     22 
     23 import java.util.List;
     24 
     25 
     26 
     27 public class If extends AbstractFunction {
     28 
     29     private static final List<String> desc = new LinkedList<String>();
     30 
     31     private static final String KEY = "__if";
     32 
     33 
     34 
     35     static {
     36 
     37         desc.add("Actual value");
     38 
     39         desc.add("Expected value");
     40 
     41         desc.add("Result if actual == expected");
     42 
     43         desc.add("Result if actual != expected");
     44 
     45         desc.add("Name of variable in which to store the result (optional)");
     46 
     47     }
     48 
     49 
     50 
     51     private Object[] values;
     52 
     53 
     54 
     55     public If() {
     56 
     57     }
     58 
     59 
     60 
     61     @Override
     62 
     63     public synchronized String execute(SampleResult previousResult, Sampler currentSampler)
     64 
     65             throws InvalidVariableException {
     66 
     67 
     68 
     69         String actual = getParameter(0);
     70 
     71         String expected = getParameter(1);
     72 
     73 
     74 
     75         String result = null;
     76 
     77         if (actual.equals(expected)) {
     78 
     79             result = getParameter(2).toString();
     80 
     81         } else {
     82 
     83             result = getParameter(3).toString();
     84 
     85         }
     86 
     87 
     88 
     89         JMeterVariables vars = getVariables();
     90 
     91         if (vars != null && values.length > 4) {
     92 
     93             String varName = getParameter(4).trim();
     94 
     95             vars.put(varName, result);
     96 
     97         }
     98 
     99 
    100 
    101         return result;
    102 
    103     }
    104 
    105 
    106 
    107     @Override
    108 
    109     public synchronized void setParameters(Collection<CompoundVariable> parameters) throws InvalidVariableException {
    110 
    111         checkMinParameterCount(parameters, 4);
    112 
    113         values = parameters.toArray();
    114 
    115     }
    116 
    117 
    118 
    119     @Override
    120 
    121     public String getReferenceKey() {
    122 
    123         return KEY;
    124 
    125     }
    126 
    127 
    128 
    129     @Override
    130 
    131     public List<String> getArgumentDesc() {
    132 
    133         return desc;
    134 
    135     }
    136 
    137 
    138 
    139     private String getParameter(int i) {
    140 
    141         return ((CompoundVariable) values[i]).execute();
    142 
    143     }
    144 
    145 }
    View Code
  • 相关阅读:
    Proj THUDBFuzz Paper Reading: The Art, Science, and Engineering of Fuzzing: A Survey
    Proj THUDBFuzz Paper Reading: A systematic review of fuzzing based on machine learning techniques
    9.3 付费代理的使用
    11.1 Charles 的使用
    第十一章 APP 的爬取
    10.2 Cookies 池的搭建
    10.1 模拟登录并爬取 GitHub
    11.5 Appium 爬取微信朋友圈
    11.4 Appium 的基本使用
    11.3 mitmdump 爬取 “得到” App 电子书信息
  • 原文地址:https://www.cnblogs.com/guanyf/p/10912399.html
Copyright © 2011-2022 走看看