【问题标题】:JMeter - execute JSR223 Sampler or PreProcessor JSR223 before user defined parametersJMeter - 在用户定义参数之前执行 JSR223 Sampler 或 PreProcessor JSR223
【发布时间】:2018-04-04 08:25:19
【问题描述】:

我尝试使用简单的 JSR 223 Sampler 使用 BeanShell 从属性文件中加载值,我成功地做到了这样简单:

for (String key : localConfigProp.stringPropertyNames()) {
                String value = localConfigProp.getProperty(key);
                props.put(key,value); 
} 

现在我有 UDV 控制器,我尝试将其从属性加载到变量

test_param  ${__property(test_param,,${test_param_default} )}   

JSR223 Sampler 之后的 UDV 控制器问题是在 windows 中 test_param 确实从属性文件和 linux 中设置其值
test_param 仍保持其默认 ${test_param_default} 值
我想这与首先调用 UDV 控制器有关。

如何使脚本在 UDV 之前被调用?

【问题讨论】:

    标签: jmeter


    【解决方案1】:

    不能UDV 之前调用脚本。

    用户定义的变量元素允许您定义一组初始变量,就像在测试计划中一样。

    请注意,测试计划中的所有 UDV 元素(无论它们位于何处)都在开始时进行处理。

    您可以将 UDV 替换为 User Parameters 预处理器

    有关在测试运行期间定义变量,请参阅用户参数

    或者使用vars更新JSR223 Element中的变量:

    vars - (JMeterVariables) - 提供对变量的读/写访问权限:

    vars.put("variableName", "newValue");
    

    当变量被用作${variableName}时(不是在UDV中),将在后续步骤中更新它

    编辑

    如果您想将属性复制到变量 - 您可以添加值 ${__P(START.HMS)}

    对于 JSR223 元素,您可以使用

    vars.put("variableName", props.get("START.HMS"));
    

    【讨论】:

    • 用户参数接受变量?我可以使用 __P 助手吗?
    • @user63898 要将属性复制到变量?您可以添加价值${__P(START.HMS)}。对于 JSR223,您可以使用 vars.put("a", props.get("START.HMS"));
    • 我想在 UDV 或任何其他 GUI 控制器中定义测试计划变量,我不想在脚本中设置用户变量。我尝试了用户属性控制器,但它迫使我在每个线程组中执行它我不能在 setUP 组中设置一次吗?
    • 否,请参阅stackoverflow.com/questions/707832/…,但您可以添加Test Fragement 并在多个线程组中重复使用它。
    • 如此简单的任务,但实现起来却如此复杂
    猜你喜欢
    • 1970-01-01
    • 2023-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-06
    • 2020-12-17
    • 2021-12-13
    相关资源
    最近更新 更多