首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RobotFramework:在RobotFramework中定义RobotFramework关键字

RobotFramework:在RobotFramework中定义RobotFramework关键字
EN

Stack Overflow用户
提问于 2017-08-09 09:41:44
回答 1查看 2.9K关注 0票数 0

早上好,

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

例如,do_nothing函数。

代码语言:javascript
复制
def hello(name):
    print "Hello, %s!" % name

def do_nothing():
    pass

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

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

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

例:

代码语言:javascript
复制
A
A/B
A/B/C   <== use here
A/B/D
A/B/E   <== use here
...

就这样一个..。

例如,是否可以只在A级直接添加函数一次?

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

代码语言:javascript
复制
A/lib.robot:
*** Keywords ***
def hello(name):
    print "Hello, %s!" % name

def do_nothing():
    pass

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

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-09 12:04:12

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

如果使用该路径,则路径可以是相对的,也可以是绝对的。例如,如果需要使用A/B/C和A/B/E中的库,则可以将文件放入A中,然后将其引用为./_ library . put。

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

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

底线是非常直接的:您的测试要么必须提供正确的库路径,要么包含库的文件夹必须位于PYTHONPATH上。这是唯一的两个选择。

这在用户指南中有完整的文档,在题为导入图书馆配置搜索库和其他扩展的位置的部分中。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45587041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档