早上好,
我在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
答案 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 Libraries和Configuring where to search libraries and other extensions
的部分