我在命令行中使用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个电话,这将被触发......几次!
考虑到这是出于测试目的,我担心这可能会对结果产生影响(尽管对于所有请求,这也可能完全相同)。
无论如何,我试图找到一种方法在启动时删除它:一次为所有请求。
任何人都有关于如何做的提示?
答案 0 :(得分:1)
考虑你要删除的(采样器的参数),它不能在其他地方/全局删除。也许您可以改为使用2个模板:一个有一个模板,一个没有该参数,并选择模板,如果控制器基数为变量值:
If Controller with condition: "${SPECIFIC_PARAM}"==""
Sampler without MAP argument
If Controller with condition: "${SPECIFIC_PARAM}"!=""
Sampler with MAP argument