【问题标题】:RobotFramework: Define a Python keyword in RobotFrameworkRobotFramework:在 RobotFramework 中定义一个 Python 关键字
【发布时间】:2018-01-17 03:05:17
【问题描述】:

早上好,

我在 RobotFramework 文档中看到可以直接在 python 中创建关键字 (http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#creating-user-keywords)

例如 do_nothing 函数。

def hello(name):
    print "Hello, %s!" % name

def do_nothing():
    pass

它工作得很好,但问题是它必须添加到变量 PYTHONPASS 中,或者包含该文件的目录中。

问题是测试可以在多台计算机上执行,这意味着应该在每台运行测试的计算机上修改 this 变量。

第二点,不幸的是我的文件会在几个目录中使用。

例如:

A
A/B
A/B/C   <== use here
A/B/D
A/B/E   <== use here
...

还有一个..

是否可以直接在A级添加功能例如只添加一次?

或者是否可以在A目录级别的RobotFramework的关键字部分中添加一次,然后在C和E机器人文件中直接引用它:

A/lib.robot:
*** Keywords ***
def hello(name):
    print "Hello, %s!" % name

def do_nothing():
    pass

C and E:
*** Settings ***
Resource    ../../A/lib.robot

【问题讨论】:

    标签: robotframework


    【解决方案1】:

    您不能将基于 python 的关键字放在机器人文件中。您唯一的选择是将其放入 .py 文件中。导入该库有两种选择:通过文件路径导入(例如:Library the_library.py),或通过模块名称导入(例如:Library the_library)。

    如果使用路径,路径可以是相对的,也可以是绝对的。例如,如果您需要使用 A/B/C 和 A/B/E 中的库,您可以将文件放在 A 中,然后将其引用为 ../../the_library.py。

    如果您按模块名称导入它,就像任何 python 模块一样,它必须在您的 PYTHONPATH 中。没有例外。如果按文件名导入,则必须指定一个实际指向该文件的文件名。这是您仅有的两个选择。

    最常见的解决方案是将文件放在所有使用它的机器上的相同位置。然后,无需修改测试即可在不同的机器上工作。这也意味着每台机器都可以定义相同的 PYTHONPATH。

    底线很简单:您的测试要么必须提供库的正确路径,要么包含库的文件夹必须位于 PYTHONPATH 上。这是仅有的两个选择。

    这在用户指南中有完整的记录,在标题为 Importing LibrariesConfiguring where to search libraries and other extensions 的部分中

    【讨论】:

    • 谢谢。解决方案:Library ../../lib/MyLibrary.py 效果很好:)
    猜你喜欢
    • 2021-08-13
    • 1970-01-01
    • 2021-11-05
    • 1970-01-01
    • 1970-01-01
    • 2017-04-07
    • 2020-05-09
    • 2016-11-20
    • 2015-10-10
    相关资源
    最近更新 更多