我们如何从JMeter测试计划中删除一次(在启动时)请求参数?

时间:2018-04-19 07:39:28

标签: jmeter beanshell

我在命令行中使用jmeter来对某些目标执行自动化测试。

看起来像这样:

for files in ./*.jmx; do
./jmeter \
    -n -t ${file}/Test_perfs_qgis_SHORT.jmx  \
    -l ${TEST_DIR_PATH}/at_bench.log \
    -e \
    -o ${TEST_DIR_PATH}/report \
    -J TEST_DIR_PATH="${TEST_DIR_PATH}" \
    -J COMMON_PARAM="someValue" \
    -J ANOTHER_COMMON_PARAM="anotherValue" \
    -J SPECIFIC_PARAM="someValue Or emptyIfNotExpected" 
fi

大多数目标共享相同的GET模板,或至少允许意外参数(然后只会被忽略)。 但有些目标在收到额外参数时会失败。

因此,我添加了一个PreProcessor,以便在未提供其值时删除该参数。

if((vars.get("SPECIFIC_PARAM") == null)||(vars.get("SPECIFIC_PARAM")=="")){
    sampler.getArguments().removeArgument("MAP");
}

这很有效。但由于我有大约50000个电话,这将被触发......几次!

考虑到这是出于测试目的,我担心这可能会对结果产生影响(尽管对于所有请求,这也可能完全相同)。

无论如何,我试图找到一种方法在启动时删除它:一次为所有请求。

任何人都有关于如何做的提示?

1 个答案:

答案 0 :(得分:1)

考虑你要删除的(采样器的参数),它不能在其他地方/全局删除。也许您可以改为使用2个模板:一个有一个模板,一个没有该参数,并选择模板,如果控制器基数为变量值:

If Controller with condition: "${SPECIFIC_PARAM}"==""
    Sampler without MAP argument
If Controller with condition: "${SPECIFIC_PARAM}"!=""
    Sampler with MAP argument