2017-04-07 28 views
0

考慮以下robotframework代碼例如:簡化robotframework/implizit變量賦值

*** Variables *** 
${VAR_1}   any value 
${VAR_2}   another value 

*** Test Cases *** 
For Example only 
    ${VAR_1}= Some Conversion ${VAR_1} 
    ${VAR_2}= Some Conversion ${VAR_2} 
    A User Keyword ${VAR_1} ${VAR_2} 

Desired Notation 
    A User Keyword Some Conversion ${VAR_1} Some Conversion ${VAR_2} 

*** Keywords *** 
Some Conversion 
    [Arguments] ${value_to_convert} 
    ${value_to_convert}= Catenate ${value_to_convert} Foobar 
    [Return] ${value_to_convert} 

A User Keyword 
    [Arguments] ${arg1} ${arg2} 
    Log ${arg1} 
    Log ${arg2} 

問題:有以簡化工作測試用例For Example only到(非工作)的可能性Desired Notation - 或 - 可予以某種方式使用一個關鍵字的返回值作爲參數傳遞,而不需要在之前進行明確的分配?

對於澄清:

  • Some Conversion將更爲複雜,並且內 實施jrobotremotelibrary
  • 移動assingments到A User Keyword是 沒有有用的解決方案,因爲會有很多關鍵字 不同量的參數使用相同的功能

回答

3

是的,這是可能的。你可以寫自己的關鍵字調用被作爲參數傳入其他關鍵字

這將是這個樣子:

*** Keywords *** 
A User Keyword 
    [Arguments] ${keyword1} ${var1} ${keyword2} ${var2} 
    ${var1}= Run keyword ${keyword1} ${var1} 
    ${var2}= Run keyword ${keyword2} ${var2} 
    log ${var1} 
    log ${var2} 

你會使用這個關鍵詞完全一樣在你的榜樣:

A User Keyword Some Conversion ${VAR_1} Some Conversion ${VAR_2} 
1

關鍵字的參數值賦值不能是其他關鍵字的返回值。

正如@Bryan Oakly所強調的那樣,可以通過巧妙的使用Run keyword來模仿外觀,因爲您突出顯示,這不起作用,因爲作業可能並不總是使用關鍵字或甚至具有相同參數數目的關鍵字。

所以,最好的方法就是你已經在做的事情,把值賦給變量,然後把變量賦給關鍵字參數。

+0

答案很難接受。在我的情況下,你的將是正確的(不可能按照我的預期方式) - 但是@Bryan Oakly提供的解決方法可能會幫助更多的人陷入同樣的​​問題。感謝您的澄清。 –