根据外部变量改变"User Defined Variables"

Change "User Defined Variables" based on external variable

我在尝试根据现有变量更改用户定义变量时遇到了一些问题。

BeanShell:

String databaseSize;

if (${__P(DBsize,${DB_size})} == '0') {
vars.put("databaseSize","SmallDB"); }
    else if (${__P(DBsize,${DB_size})} == '1') 
    {vars.put("databaseSize","LargeDB");}

用户自定义变量

名称:路径

值:${__BeanShell(import org.apache.jmeter.services.FileServer; FileServer.getFileServer().getBaseDir();)}\ ${databaseSize}

我想根据我在 databaseSize 中存储的内容更改 path。我在给定路径中有两个文件夹:SmallDB 和 LargeDB。据我所知,UDV 在 JMeter 设法 运行 我的 BeanShell 之前被分配。

是否有其他方法可以根据另一个变量(从 Jenkins 接收或从文件接收的默认值)更改 path

谢谢

您可以使用vars.put添加JMeter变量:

 import org.apache.jmeter.services.FileServer; 

 vars.put("path",  FileServer.getFileServer().getBaseDir());
  1. Since JMeter 3.1 it is recommended to use Groovy language for any form of scripting mainly because Groovy performance is much better than Beanshell 和朋友
  2. 您可以将 __groovy() function 直接放入用户定义变量的 Value 节中 - 它会在处理配置元素时进行评估
  3. 您可以选择 ternary operator 以便将您的代码转换为更小的一行,例如:

    ${__groovy((props.getProperty("DBsize").equals("0")) ? "SmallDB" : "LargeDB",)}
    

    所以你的配置是: