簡體   English   中英

從 Run Keyword If 條件 Robot Framework 中獲取關鍵字的返回值

[英]Get return value from keyword from within Run Keyword If conditional Robot Framework

通常從關鍵字中獲取返回值並不是什么大問題,

${myVar}=     My Keyword

這將按預期工作。

我試圖解決的問題類似於以下情況。 我通常可以找到解決方法,但我想找到更好的方法。

Run Keyword If     '${someVar}' == 'True'     Run Keywords
     ...     Do Something
     ...     AND     ${myVar}=     My Keyword
     ...     AND     Do More Stuff

當我需要寫這樣的東西時, My Keyword關鍵字不被識別為關鍵字,我無法運行我的測試。 我可以將它從條件中拉出來並在之前運行關鍵字,但這意味着我將浪費時間運行一個不應該運行的關鍵字,有時會導致失敗。 我發現了這個, How to get Returned value from a Keyword called under Run Keyword If in Robot Framework? ,但這是針對單個關鍵字的,我不確定是否可以擴展到多個關鍵字。 此外,可能會出現其他情況,例如以下情況並使事情變得更加復雜,

Run Keyword If     '${someVar}' == 'True'     Run Keywords
     ...     Do Something
     ...     AND     ${myVar}=     My Keyword
     ...     AND     Do More Stuff
     ...     AND     ${myVar_2}=     My Other Keyword
     ...     AND     Do Other Stuff

有人有什么建議嗎? 我是否應該將一個Run Keyword If分成幾個Run Keyword If ,這樣我就可以利用上面鏈接中的示例? 我會很感激任何建議。

更新:如果其他人遇到這個我為解決問題所做的事情如下,

Run Keyword If     '${someVar}' == 'True'     Do Something
${myVar}=     Run Keyword If     '${someVar}' == 'True'     My Keyword
Run Keyword If     '${someVar}' == 'True'     Run Keywords
     ...     Do More Stuff
     ...     AND     And Do Other More Stuff

我稍后會研究新的IF條件,但我想在忘記之前更新它。

您鏈接到的問題是相同的解決方案,而不是您運行一個或多個關鍵字。

${result}=  Run keyword if  '${someVar}'  Run Keywords  ...

在這種情況下,無論Run Keywords返回什么都將分配給${result} 沒有辦法在 arguments 中進行變量賦值來Run Keywords

如果您需要運行多個步驟,您可以做的最好的事情是使用這些多個步驟創建一個關鍵字,然后從Run keyword if

注意:robotframework 4.0(在我閱讀本文時處於測試階段)支持原生 IF 語句 據說2020年底會發布。原生的IF語句可以讓你在IF塊體中賦值變量。

有了對IF語句的新支持,您可以像這樣重寫您的示例:

IF    '${someVar}' == 'True' 
    Do Something
    ${myVar}=     My Keyword
    Do More Stuff
    ${myVar_2}=     My Other Keyword
    Do Other Stuff
END

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM