RobotFramework:在RobotFramework中定义Python关键字

Tot*_*001 0 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
Run Code Online (Sandbox Code Playgroud)

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

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

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

例如:

A
A/B
A/B/C   <== use here
A/B/D
A/B/E   <== use here
...
Run Code Online (Sandbox Code Playgroud)

一个......

例如,是否可以直接在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
Run Code Online (Sandbox Code Playgroud)

Bry*_*ley 6

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

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

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

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

底线非常简单:您的测试要么必须提供到库的正确路径,要么包含该库的文件夹必须在PYTHONPATH上.这是唯一的两个选择.

这完整记录在用户指南的标题为" 导入库"和" 配置库搜索库和其他扩展的位置"的部分中