【问题标题】:Robot framework - examples from google docs not working机器人框架 - 来自谷歌文档的示例不起作用
【发布时间】:2013-11-11 01:15:31
【问题描述】:

我刚刚开始研究 Robot 框架(也刚开始学习 Python..)。每当我尝试从 google docs 运行一些代码示例时,都会引发各种错误。现在,我为我的无知道歉,我想知道我哪里出错了。 前任: 我从谷歌代码中复制了这段代码,但它不起作用。

:FOR    ${var}  IN  @{VALUES}
Continue For Loop If    '${var}' == 'CONTINUE'  

我的 values/var 变量应该包含什么才能使其正常工作。它总是抛出一个“不是关键字异常”。我还没有安装 Jython BTW。我必须安装它吗?

另外,如何使用“CALL METHOD”关键字。

Call Method ${hashtable} isEmpty

不起作用。即使我将哈希表初始化为某个 val 或将其设置为 none。

编辑:

TC 01
     FOR    ${item} IN  @{list}
       Log  ${item}

我正在尝试运行上面的代码。我已经定义了列表和项目(我认为将项目声明为变量是不必要的,如果我错了,请纠正我)。现在,当我尝试运行此代码时,我得到 'For' is a reserved keyword 错误。如果我尝试在 LOG 或 FOR 之前插入一个 '\',它会显示 - “没有找到名称为 '\FOR' 的关键字”。 .我究竟做错了什么??

【问题讨论】:

    标签: java python jython robotium robotframework


    【解决方案1】:

    使用 Robot Framework,您不需要 Jython,它只是一种选择。 Python 就是你所需要的。

    你的for循环无效,应该是这样的:

    *** Variables ***
    @{list}           foo    bar    lorem    ipsum    dolor    sit    amet
    
    *** Test Cases ***
    Example
        : FOR    ${item}    IN    @{list}
        \    Log    ${item}
    

    如果您将其保存为 example.txt 并在同一目录中运行 pybot example.txt,它会单独传递并记录 list 的所有项目。

    为了使用Call Method,你需要有一些对象和方法可以调用。所以你必须有一个python文件,它有一个类、一个函数,并且将该类实例化并分配给一个变量。像这样:

    class MyObject:
        def __init__(self):
            self.args = None
        def my_method(self, *args):
            self.args = args
    
    obj = MyObject()
    

    并将其保存到vars.py(与example.txt 相同的目录),然后将其放入您的example.txt

    *** Settings ***
    Variables         vars.py
    
    *** Variables ***
    @{list}           foo    bar    lorem    ipsum    dolor    sit    amet
    
    *** Test Cases ***
    Example
        : FOR    ${item}    IN    @{list}
        \    Log    ${item}
    
    Example2
        Call Method    ${obj}    my_method
        Should Be True    ${obj.args} == ()
        Call Method    ${obj}    my_method    arg
        Should Be True    ${obj.args} == ('arg',)
        Call Method    ${obj}    my_method     a1     a2
        Should Be True    ${obj.args} == ('a1','a2')
    

    但我猜你此时并不想使用Call Method

    【讨论】:

    • 非常感谢。但是您的意思是-“您的 for 循环无效,应该是这样的:”。我从google docs复制了for循环的代码sn-p。尽管如此,我同意你的看法。我使用的语法对我没有任何意义。
    • :FOR ${var} IN @{VALUES} Continue For Loop If '${var}' == 'CONTINUE' 表示 FOR 循环不包含任何关键字。您需要将\ 放在Continue For Loop If 关键字之前。
    • 现在可以使用了...我的语法错误。我这边的“SPACING”错误。一个问题,我们为什么使用“\”。它有什么用途?
    • 请阅读我给你的例子。特别要注意 for 循环和它之后的行。不是FOR,而是:FOR。后面的行以 \ 和至少两个空格字符开头。为什么我们需要把\ 放在那里?因为那是语法。为什么机器人框架的发明者 Pekka Klärck (stackoverflow.com/users/38083/pekka-klarck) 会接受这样的语法?我不知道。
    猜你喜欢
    • 1970-01-01
    • 2014-09-05
    • 2015-12-07
    • 2013-01-23
    • 2022-01-01
    • 2013-04-11
    • 2019-05-03
    • 2018-05-06
    • 1970-01-01
    相关资源
    最近更新 更多