2017-08-09 63 views
0

早上好,RobotFramework:在RobotFramework

我的RobotFramework文档,有可能在python直接 (http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#creating-user-keywords

例如在do_nothing函数来创建关键字见过定义Python关键词。

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级只有一次实例添加功能?

或者是有可能在RobotFramework的部分关键词在A级目录添加一次,并直接在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 

回答

4

你不能把基于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

+0

感谢一个部分。解决方案:'Library ../../ lib/MyLibrary.py'工作得很好:) – Totoc1001