标签:private tar pid cut 查看 pack rri jmeter except
JMeter是测试自动化社区中最好的开源工具之一。它提供了所有可能的扩展,可以快速提供我们的测试脚本。为了让我们的生活更轻松,它还让我们通过实现几个接口来提出我们自己的插件。
在本文中,让我们看看如何创建自定义函数并使其出现在下面的JMeter 函数帮助器对话框中。
我的目标是创建一个简单的Join函数,它将使用给定的分隔符连接2个给定的字符串并将其存储在用户定义的变量中。
用法是 $ {__ join(string1,string2,delimiter,resultVariable)}
我们将参考JMeter的AbstractFunction ,它应该被扩展用于创建我们自己的函数和 __ strLen函数,以便了解我们自己的函数是如何实现的。
让我们首先使用所有依赖项设置我们的IDE。
< 依赖 > | |
< groupId > org.apache.jmeter </ groupId > | |
< artifactId > ApacheJMeter_core </ artifactId > | |
< version > 3.1 </ version > | |
</ dependency > |
private static final List<String> desc = new LinkedList<String>(); static { desc.add("String 1"); desc.add("String 2"); desc.add("Delimiter"); desc.add("Name of variable in which to store the result (optional)"); }
private Object[] values; @Override public void setParameters(Collection<CompoundVariable> parameters) throws InvalidVariableException { values = parameters.toArray(); //returns an object array }
} |
@Override public String execute(SampleResult arg0, Sampler arg1) throws InvalidVariableException { JMeterVariables vars = getVariables(); String str1 = ((CompoundVariable) values[0]).execute().trim(); //parameter 1 String str2 = ((CompoundVariable) values[1]).execute().trim(); //parameter 2 String delimiter = ""; if(values.length>2){ delimiter = ((CompoundVariable) values[2]).execute(); //parameter 3 - delimiter could be a space - don‘t trim } String result = str1 + delimiter + str2; //user might want the result in a variable if( null!=vars && values.length>3){ String userVariable = ((CompoundVariable) values[3]).execute().trim(); vars.put(userVariable, result); //store the result in the user defined variable } return result; }
StrJoin类看起来像这样。
package com.testautomationguru.plugins.functions; import java.util.Collection; import java.util.LinkedList; import java.util.List; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.functions.AbstractFunction; import org.apache.jmeter.functions.InvalidVariableException; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.threads.JMeterVariables; public class StrJoin extends AbstractFunction { private static final List < String > desc = new LinkedList < String > (); private static final String MyFunctionName = "__Join"; static { desc.add("String 1"); desc.add("String 2"); desc.add("Delimiter"); desc.add("Name of variable in which to store the result (optional)"); } private Object[] values; public StrJoin() {} public List < String > getArgumentDesc() { return desc; } @Override public String execute(SampleResult arg0, Sampler arg1) throws InvalidVariableException { JMeterVariables vars = getVariables(); String str1 = ((CompoundVariable) values[0]).execute().trim(); //parameter 1 String str2 = ((CompoundVariable) values[1]).execute().trim(); //parameter 2 String delimiter = ""; if (values.length > 2) { delimiter = ((CompoundVariable) values[2]).execute(); //parameter 3 - delimiter could be a space - don‘t trim } String result = str1 + delimiter + str2; //user might want the result in a variable if (null != vars && values.length > 3) { String userVariable = ((CompoundVariable) values[3]).execute().trim(); vars.put(userVariable, result); //store the result in the user defined variable } return result; } @Override public String getReferenceKey() { return MyFunctionName; } @Override public void setParameters(Collection < CompoundVariable > parameters) throws InvalidVariableException { values = parameters.toArray(); } }
我希望这篇文章可以帮助您提出自己的函数实现。我们还将在未来的文章中看到更多我们如何扩展其他JMeter的测试元素。
扩展JMeter - 创建自定义函数 - String Joiner (翻译)
标签:private tar pid cut 查看 pack rri jmeter except
原文地址:https://www.cnblogs.com/a00ium/p/10381256.html