软件测试软件测试Apache JMeter

对 “jmeter 4.0-函数助手”二次开发

2018-06-22  本文已影响44人  呆呆冬

  JMeter函数可以被认为是某种特殊的变量,它们可以被采样器或者其他测试元件所引用。
  函数调用的语法为:${__functionName(var1,var2,var3)} 其中,__functionName匹配被调用的函数名称。用圆括号包含函数的形参,例如${__time(YMD)},不同函数要求的参数也不同。有些JMeter函数不要求参数,则可以不使用圆括号,例如${__threadNum}。

那么重点来了:

如果一个函数的参数中包含逗号,那么必须对逗号进行转义(使用"\"),否则JMeter会把逗号当成参数分隔符。例如:${__time(EEE, d MMM yyyy)}

  因为大部分函数都是包含参数的,而参数本身包含逗号时,就会出现不同的问题,比如_RandomString函数无法正确街区随机字符串,_MD5函数无法加密字符串等问题。相信很多人一开始都会像我一样懵逼半天。
  所以,既然Jmeter官网有时间整理相关转义的文档,为什么不直接在代码里面做修改呢?

这不也正是练手Jmeter二次开发的契机吗,Let's do it!

一、准备工作:

先将jmeter源码导入eclipse,具体操作请参考JMeter源码集成到Eclipse笔记。

二、修改源码:

找到函数助手UI的代码:


找到函数助手“生成”操作的代码,添加将参数中的逗号替换为“,”的代码即可:

 @Override
    public void actionPerformed(ActionEvent e) {
        StringBuilder functionCall = new StringBuilder("${");
        functionCall.append(functionList.getText());
        Arguments args = (Arguments) parameterPanel.createTestElement();
        if (args.getArguments().size() > 0) {
            functionCall.append("(");
            PropertyIterator iter = args.iterator();
            boolean first = true;
            while (iter.hasNext()) {
                Argument arg = (Argument) iter.next().getObjectValue();
                if (!first) {
                    functionCall.append(",");
                }
                //参数中包含逗号时替换为“\,”
                functionCall.append(arg.getValue().replace(",", "\\,"));
                first = false;
            }

三、ant编译:

  1. 源码修改完毕并保存后,右键项目最下方build.xml—>Run As—>Ant Build
  2. 配置完毕,运行验证:右键NewDriver.java—>Run As—>Run Configurations启动jmeter GUI,进入函数助手验证,自动转义参数中的逗号即验证通过。

3.对应的jar包,将其拷贝到日常使用的 jmeter的/lib/ext路径下,替换掉原来名称相同的jar包:



四、开心的去使用:

上一篇下一篇

猜你喜欢

热点阅读