【问题标题】:execute robot keyword from python using robotframework api使用robotframework api从python执行机器人关键字
【发布时间】:2015-01-18 13:18:45
【问题描述】:

用机器人语言编写复杂的机器人关键字有时非常耗时,因为机器人语言不是真正的编程语言。我想用 python 写我的关键字,只用机器人框架语言公开简单的 html 表。问题是我们已经有很多用机器人语言编写的低级机器人关键字(在 .robot 和 .txt 文件中)。是否可以使用 robotsframework python api 从 python 代码中执行这些关键字?

【问题讨论】:

    标签: python testing robotframework


    【解决方案1】:

    是的,这是可能的。在您的 python 代码中,您可以获得对 BuiltIn 库的引用,然后使用 Run Keyword 关键字来运行您想要的任何关键字。

    例如,您可以编写一个 python 关键字,将另一个关键字作为参数并运行它。以下可能是您在 python 中的操作方式:

    # MyLibrary.py
    from robot.libraries.BuiltIn import BuiltIn
    
    def call_keyword(keyword):
        return BuiltIn().run_keyword(keyword)
    

    然后您可以告诉该关键字调用任何其他关键字。这是一个示例套件,其中包含用机器人编写的关键字,然后让 python 代码执行它:

    *** Settings ***
    | Library | MyLibrary.py
    
    *** Keywords ***
    | Example keyword
    | | log | hello, world
    
    *** Test Cases ***
    | Example of calling a python keyword that calls a robot keyword
    | | Call keyword | Example keyword
    

    注意测试用例如何告诉call_keyword 方法运行关键字Example Keyword。当然,您不必 传递关键字。关键是获取对 BuiltIn 库的引用,然后您可以调用该库中的任何方法。

    这在机器人框架用户指南的标题为Using Robot Framework's Internal Modules 的部分中有记录。更具体地说,请参阅Using BuiltIn Library 部分。

    请注意,如果您的关键字调用 run_keyword 方法,文档说明您需要调用 register_run_keyword。我不会在这里复制文档。您可以通过查看 BuiltIn 模块本身来获取文档,或者在交互式 python 会话中运行以下代码:

    >>> import robot.libraries.BuiltIn
    >>> help(robot.libraries.BuiltIn.register_run_keyword)
    

    【讨论】:

    • 我刚刚测试过了。它就像一个魅力。 python 关键字甚至继承了调用者关键字可用的所有资源。非常感谢。
    • 请注意, register_run_keyword 可能与您想要的相反,具体取决于您希望 Robot 何时评估参数。例如,如果你 register_run_keyword 一个类似 foo(first=1, second=2, third=3) 的函数并调用 Foo | third=1,你实际上会执行 foo("third=1", 2, 3)。这可能是它在 Robot 3.0 中被弃用的部分原因。
    猜你喜欢
    • 2018-05-28
    • 2016-10-01
    • 1970-01-01
    • 2018-01-17
    • 2017-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    相关资源
    最近更新 更多