使用参数作为用户定义的变量?

Dom*_*mra 5 jmeter

我们在非 gui 模式下运行我们的测试并传入各种参数,如服务器、端口、线程等。我们还希望在 GUI 模式下运行我们的测试,并且能够在 GUI 中更改这些参数。

我想做的是使用 2 个用户定义的变量对象,其中一个带有我们可以编辑的静态数据,另一个带有参数。这样实际的测试计划不会改变,但我们可以将变量设置为参数,而只需禁用静态数据。或者当我们想使用静态数据运行时禁用参数化的。

但这似乎不起作用 - 没有错误。

Lee*_*der 5

我做了类似的事情,但我为此使用了 UDF。

我所做的是设置我的变量并使用默认值。

VARNAME      VALUE  
otl_PROTOCOL ${__P(otl_protocol,https)}  
otl_PORT     ${__P(otl_port,443)}  
otl_THREADS  ${__P(otl_threads,1)}      
otl_REPS     ${__P(otl_reps,1)}  
otl_RAMP     ${__P(otl_ramp,0)}  
Run Code Online (Sandbox Code Playgroud)

我也为服务器名称做了一个。这样,我可以在这里使用默认值,也可以在命令行参数或我的 user.properties 中传入参数。这对我来说非常有效。


Bla*_*aff 1

您如何从非 GUI 模式传递值?通过 CSV、使用属性、用户参数等?

如果是 CSV,这是一个简单的解决方法。只需在测试计划级别创建一个用户定义变量 (UDV) 对象并“硬编码”所有参数(服务器、端口等)。保留您的 CSV 配置。如果在 GUI 模式下运行,请禁用 CSV 并启用 UDV。保存文件时,保持 CSV 启用并禁用 UDV - 这样,当您从非 GUI 运行时,它将读取 CSV 文件。

如果使用属性,我将执行以下操作: 使用所有参数(服务器等)创建 UDV。输入值之前,请复制组件,以便拥有两个相同的 UDV。在 UDV 1 中,从命令行输入属性值。在 UDV 2 中,输入“硬编码”值。在整个脚本中,请将对属性的任何引用替换为变量引用。它看起来像这样:

        UD1:                               UD2:
  Name        Value                  Name        Value
    SERVER      ${__P(Server)}          SERVER      devdomain.com
    PORT        ${__P(Port)}            PORT        4111


Some HTTP Request

Domain: ${SERVER}
Run Code Online (Sandbox Code Playgroud)

如果使用用户参数,则与上面的概念相同。