一、自定义请求编写(java_sampler)
1.添加依赖ApacheJMeter_core、ApacheJMeter_java
2.编写功能类(见下方示例Hello.class)
3.编写java请求类(见下方示例JmeterTestHello.class),继承抽象类AbstractJavaSamplerClient,并实现方法runTest()
4.maven打包clean->package
5.把打包后的jar包到jmeter/lib/ext目录下
6.新增java请求使用
示例如下:
public class Hello {public String hello(String name){return "hello"+name;}}
public class JmeterTestHello extends AbstractJavaSamplerClient {public SampleResult runTest(JavaSamplerContext javaSamplerContext) {SampleResult sampleResult = new SampleResult();sampleResult.sampleStart();//创建Hello对象,调用hello方法Hello hello = new Hello();//动态入参String username = javaSamplerContext.getParameter("username");String string = hello.hello(username);//设置返回信息、是否成功sampleResult.setResponseData(string,null);sampleResult.setSuccessful(true);sampleResult.sampleEnd();return sampleResult;}//设置默认入参字段与设置值@Overridepublic Arguments getDefaultParameters() {Arguments args = new Arguments();args.addArgument("username","jianguo");return args;}}
验证:

二、自定义函数
当jmeter函数助手提供的功能不满足测试使用时,对于对于经常使用的功能,可以自己写一个函数方便使用。
1.添加pom依赖ApacheJMeter_functions
2.新建包和类(包名必须是functions)
3.继承抽象类AbstractFunction
4.参照apache-jmeter-5.1.1\src\functions\org\apache\jmeter\functions的函数写代码(见下方示例)
5.maven打包clean->package
6.把打包后的jar包到jmeter/lib/ext目录下
7.启动jmeter就可以使用该函数了
示例如下:
public class MyFunction extends AbstractFunction {private static final List<String> desc = new LinkedList<String>();private static final String KEY = "__MYFunction";private CompoundVariable var1;private CompoundVariable var2;//静态初始化static {desc.add("第一个参数");desc.add("第二个参数");}//无参构造public MyFunction() {}//根据入参,执行核心逻辑,保存结果至相应的变量中(示例为字符串去空格拼接)public String execute(SampleResult sampleResult, Sampler sampler) throws InvalidVariableException {String var1_ = var1.execute().trim();String var2_ = var2.execute().trim();return var1_+var2_;}//接收用户输入的参数值,放collection中public void setParameters(Collection<CompoundVariable> collection) throws InvalidVariableException {checkParameterCount(collection,2);Object[] objects = collection.toArray();var1 = (CompoundVariable) objects[0];var2 = (CompoundVariable) objects[1];}//函数助手对话框中的下拉框中显示的函数名称public String getReferenceKey() {return KEY;}//参数描述,有几个参数,就几个描述public List<String> getArgumentDesc() {return desc;}}
结果验证:

文章转载自坚果测试笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




