代码之家  ›  专栏  ›  技术社区  ›  Marvin

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

  •  0
  • Marvin  · 技术社区  · 6 年前

    我正在命令行中使用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个电话,这将被触发。。。几次!

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

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

    有人知道怎么做吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   timbre timbre    6 年前

    考虑到 什么 您正在删除(采样器的参数),它不能在其他地方/全局删除。也许您可以使用两个模板:一个带该参数,另一个不带该参数,然后使用If controller base don变量值选择模板:

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