有没有办法将Robot Framework资源文件内容导入Python脚本?

Mar*_*zyk 1 python import translate robotframework

显然,可以在某些 Python 脚本中导入 Python Robot Framework 库。然而,有没有一种神奇的方法可以在Python脚本中导入Robot Framework资源文件呢?资源文件是用 RF 语法编写的,因此需要一些专用的 Python 模块来导入它(实际上将 RF 语法翻译为 Python)。也许类似的东西已经存在,甚至可以使用一些 RF 内置模块,就好像我理解正确一样,在脚本执行期间 RF 语法被转换为 Python 调用。

2018年6月18日更新:

正如 A. Kootstra 所建议的,可以使用以下命令在 Python 脚本中导入 Robot 关键字:

from robot.libraries.BuiltIn import BuiltIn
BuiltIn().import_resource('${EXECDIR}/resource.robot') 
Run Code Online (Sandbox Code Playgroud)

但是,如何访问 Python 脚本中导入的 Robot 资源中的任何关键字?builtIn().import_resource 不会将任何处理程序返回到导入的库。

我会打电话

BuiltIn.call_method
Run Code Online (Sandbox Code Playgroud)

但它需要对象实例作为第一个参数。导入的资源文件也不存在于返回的字典中

globals()
Run Code Online (Sandbox Code Playgroud)

A. *_*tra 5

BuiltIn()Robot Framework API的一部分,ReadTheDocs 上的单独文档对此进行了描述。下面是一个更全面的示例,向您展示了如何执行此操作:

导入资源.py

from robot.libraries.BuiltIn import BuiltIn

class importresource(object):

    ROBOT_LIBRARY_VERSION = 1.0

    def __init__(self):
        pass

    def custom_keyword(self):
        BuiltIn().import_resource('${EXECDIR}/resource.robot')
        BuiltIn().run_keyword('Resource Keyword')
Run Code Online (Sandbox Code Playgroud)

资源机器人

*** Keywords ***
Resource Keyword
    Log To Console   \nResource Keyword triggered.
Run Code Online (Sandbox Code Playgroud)

测试用例.robot

*** Settings ***
Library    importresource

*** Test Cases ***
TC
    custom keyword
Run Code Online (Sandbox Code Playgroud)

将导致:

==============================================================================
TC                                                                    
Resource Keyword triggered.
| PASS |
------------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)