根据外部变量更改“用户定义的变量”

时间:2018-10-02 13:52:11

标签: jmeter beanshell

尝试在基于现有变量的用户定义变量中进行更改时遇到麻烦。

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 中存储的内容更改路径。给定路径中有两个文件夹:SmallDB和LargeDB。据我所知,在JMeter设法运行我的BeanShell之前,已经分配了UDV。

是否存在基于其他变量(从Jenkins接收或从文件接收的默认值)更改 path 的另一种方法?

谢谢

2 个答案:

答案 0 :(得分:1)

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

 import org.apache.jmeter.services.FileServer; 

 vars.put("path",  FileServer.getFileServer().getBaseDir());

答案 1 :(得分:1)

  1. Since JMeter 3.1 it is recommended to use Groovy language进行任何形式的脚本编写,主要是因为Groovy performance is much better than Beanshell和朋友
  2. 您可以将__groovy() function直接放入用户定义变量的Value节中-将在处理配置元素时对其进行评估
  3. 您可以使用ternary operator以便将您的代码转换为更小的一行,例如:

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

    因此您的配置将是:

    Groovy user defined variables