机器人框架中方法中的方法

时间:2019-05-16 13:13:19

标签: python-3.x robotframework

语言:python-3.7.3 框架:机器人框架3.1.1 IDE: Pycharm 熟练程度:新手

我有一个用python编写的用户定义方法,该方法在替换匹配的字符后返回字符串。

字符串:(12356,)

要替换的字符(和,和)

替换字符: $ {empty}

预期: 123456

方法:

def replace_a_specific_character_in_a_String(self, str_var, replacingCharacter, charactertoReplace):
    str = str_var.replace(replacingCharacter, charactertoReplace)
    return str

我希望从我的机器人文件中调用以下相同的方法。

${response}=    replace a specific character in a String    [replace a specific character in a String    ${response}    , ${EMPTY})   ${EMPTY}]     (        ${EMPTY}

这将引发以下错误

Keyword 'Methods.Replace A Specific Character In A String' expected 3 arguments, got 6.

我理解错误消息,因为它以方法内部的方法为参数。那么在这种情况下应遵循的正确语法是什么。请告知。

1 个答案:

答案 0 :(得分:0)

如错误所示,您的函数需要3个参数:

  • str_var
  • replaceingCharacter
  • charactertoreplace

但是,您通过了六次。考虑以下代码行:

replace a specific character in a String    [replace a specific character in a String    ${response}    , ${EMPTY})   ${EMPTY}]     (        ${EMPTY}

因为机器人使用两个或多个空格作为参数分隔符,所以这些是它传递给函数的参数:

  • [替换字符串中的特定字符
  • $ {response}
  • ,$ {EMPTY})
  • $ {EMPTY}]
  • $ {EMPTY}

如果我了解您要执行的操作,则希望一次调用该关键字,然后将该函数的结果再次传递给该关键字。机器人不允许您这样做。您必须运行两次关键字,保存第一次调用的结果并将其传递给第二次。

例如:

${tmp}=  replace a specific character in a String    ${response}  (  ${EMPTY}
${response}=  replace a specific character in a String  ${tmp}  )  ${EMPTY}