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

时间:2011-05-23 01:35:05

标签: jmeter

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

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

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

3 个答案:

答案 0 :(得分:4)

我做了类似的事情,但我使用了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)}  

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

答案 1 :(得分: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}

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

答案 2 :(得分:0)

实际上我正在使用一个名为正则表达式的函数来获取值。 这里我必须在变量下使用变量,因为有很多具有相同边界的值,所以我选择了一个段落作为${ABC}并从此段${XYLEM}中获取值。将变量创建为正则表达式。使用${__V(ABC${XYLEM})};

创建
${__setProperty{Search_Investment_Banking,$Investment_Banking}};