2015-09-10 52 views
1

我试图在$ {__ P()}函数内插入一个变量,并且已经读取了关于此问题的几个线程,但它不起作用。我的用户定义的变量包括:

FALLBACK_TOKEN someLongString 
ACTUAL_TOKEN ${__P(tokenSetOnCommandLine,???)} 

到目前为止已经试过:

ACTUAL_TOKEN ${__P(tokenSetOnCommandLine,${FALLBACK_TOKEN})} 
    // literally returns "${FALLBACK_TOKEN}" (as expected as per Jmeter docs) 

ACTUAL_TOKEN ${__P(tokenSetOnCommandLine,${__V(${FALLBACK_TOKEN})})} 
    // same as above 

ACTUAL_TOKEN ${__P(tokenSetOnCommandLine,${__evalVar(${FALLBACK_TOKEN})})} 
    // returns blank 

ACTUAL_TOKEN ${__P(tokenSetOnCommandLine,${__eval(${FALLBACK_TOKEN})})} 
    // literally returns "${FALLBACK_TOKEN}" 

ACTUAL_TOKEN ${__P(tokenSetOnCommandLine,${__eval(FALLBACK_TOKEN)})} 
    // returns "FALLBACK_TOKEN" 

ACTUAL_TOKEN ${__P(tokenSetOnCommandLine,${__evalVar(FALLBACK_TOKEN})})} 
    // returns blank 

按的JMeter文档在http://jmeter.apache.org/usermanual/functions.html#__evalVar,我希望无论是evalVareval工作(仍然在分歧有点不清楚,到说实话)。我错过了什么?

回答

1

属性正在填充之前用户定义的变量值被评估,因此它不会以这种方式工作。

选项是:

  1. 硬编码在像.jmx脚本的默认值:在user.properties文件

    ${__P(tokenSetOnCommandLine,something)} 
    
  2. 设置默认值(下JMeter的/ bin文件夹)中添加以下行:

    tokenSetOnCommandLine=something 
    

    I ñ第二种情况,如果你提供tokenSetOnCommandLine值相似的命令行参数:

    jmeter -JtokenSetOnCommandLine=somethingElse 
    

    它将覆盖与somethingElsesomething“默认”值。否则将使用something

对JMeter的性能

+0

谢谢更多信息,请Apache JMeter Properties Customization Guide。这不是我希望得到的答案,但它确实解释了我为什么遇到麻烦。 – ebr