2015-09-10 51 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