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

How can we remove a request parameter once (at startup) from a JMeter Test Plan?

我在命令行中使用 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 模板,或者至少允许意外参数(然后将被忽略)。 但是有些目标在接收到额外参数时会失败。

因此,我添加了一个预处理器以在未提供参数值时删除参数。

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

这很好用。但是因为我有大约 50000 个电话,这将被触发......几次!

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

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

有人知道怎么做吗?

考虑到你要删除的内容(采样器的一个参数),它不能被删除elsewhere/globally。也许您可以改为使用 2 个模板:一个带有该参数,一个不带该参数,并且 select 带有 If controller base don 变量值的模板:

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