1. 程式人生 > >Jmeter新增自定義函式

Jmeter新增自定義函式

最近測試一套介面,需要自定義函式,實現模擬資料並加密之類的功能,正好之前已經將Jmeter的原始碼在eclipse中執行起來了,可以通過在org.apache.jmeter.functions下新增函式。

1. 自然是從Jmeter官網下載src檔案,並匯入eclipse,可以參考另一篇博文點選開啟連結

2. 直奔主題進行編碼,在functions下新增類,繼承AbstractFunction,並重寫方法

package org.apache.jmeter.functions;

import java.util.Collection;
import java.util.LinkedList;
import java.util.List;

import org.apache.jmeter.engine.util.CompoundVariable;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.samplers.Sampler;
import org.apache.jmeter.util.JMeterUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class GenParams extends AbstractFunction {
	private static final Logger log = LoggerFactory.getLogger(DateTimeConvertFunction.class);

    private static final List<String> desc = new LinkedList<>();
    private static final String KEY = "__genParams"; //方法名字
    private static final int MIN_PARAMETER_COUNT = 1;//最小引數數量
    private static final int MAX_PARAMETER_COUNT = 4;//最大引數數量
    
    static {
        desc.add(JMeterUtils.getResString("param1")); // 函式助手中顯示的引數說明,對應到引數 
        desc.add(JMeterUtils.getResString("param2")); // 函式助手中顯示的引數說明,對應到引數 
        desc.add(JMeterUtils.getResString("param3")); // 函式助手中顯示的引數說明,對應到引數 
        desc.add(JMeterUtils.getResString("param4")); // 函式助手中顯示的引數說明,對應到引數 
        desc.add(JMeterUtils.getResString("function_name_paropt"));// 儲存函式返回結果的變數,用於引用  
    }
    
    private CompoundVariable[] values;
    
	@Override
	public List<String> getArgumentDesc() {
		return desc;
	}

	@Override
	public String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException {
		// 自己需要實現的邏輯
		StringBuilder sb = new StringBuilder();
		for(CompoundVariable value : values) {
			sb.append(value.execute()).append("_");
		}
		return sb.toString();
	}

	@Override
	public void setParameters(Collection<CompoundVariable> parameters) throws InvalidVariableException {
		 checkParameterCount(parameters, MIN_PARAMETER_COUNT, MAX_PARAMETER_COUNT);
	     values = parameters.toArray(new CompoundVariable[parameters.size()]);

	}

	@Override
	public String getReferenceKey() {
		return KEY;
	}

}

3. 在src/functions上右鍵export,選擇jar檔案,名稱為ApacheJMeter_functions.jar

4. 替換apache-jmeter-5.0\lib\ext下的ApacheJMeter_functions.jar,啟動jmeter

可以看到自定義函式已經生效