在robotframework

时间:2017-04-07 12:43:07

标签: robotframework

考虑以下robotframework代码示例:

*** 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
  • 将分配转移到A User Keyword是 没有用的解决方案,因为会有很多关键字 使用相同功能的不同数量的参数

2 个答案:

答案 0 :(得分: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 :(得分:1)

关键字的参数值赋值不能是另一个关键字的返回值。

正如@Bryan Oakly强调的那样,可以通过巧妙地使用Run keyword来模仿外观,因为您突出显示这不会起作用,因为作业可能并不总是使用关键字甚至是具有相同编号的关键字争论。

因此,最好的方法是你已经做过的事情,将值分配给变量,然后将变量分配给关键字参数。