RobotFramework:在RobotFramework中定义Python关键字

时间:2017-08-09 09:41:45

标签: robotframework

早上好,

我在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或包含该文件的目录中添加。

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

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

例如:

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

1 个答案:

答案 0 :(得分:5)

您不能将基于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

的部分