【发布时间】:2018-07-09 12:11:37
【问题描述】:
所有 RobotFramework 用户您好
问题
我们有许多不同抽象级别的关键字,并且正在寻找一种简单的方法来导入它们,同时在 IDE 中保持对自动完成等的支持。
继承可能如下所示:
/---------------------> basic_keywords.robot <---\
/ ^ \
/ | |
| advanced_keywords_1.robot --/ advanced_keywords_2.robot
| ^
| |
more_advanced_keywords_1.robot
方案一:导入all_keywords.robot中的所有关键字
all_keywords.robot:
*** Settings ***
Library SomeLibrary.py
Resource basic_keywords.robot
Resource advanced_keywords_1.robot
Resource more_advanced_keywords_1.robot
Resource advanced_keywords_2.robot
more_advanced_keywords_1.robot:
# No Import of basic_keywords.robot here!!!
*** Keywords ***
My More Advanced Keyword
Advanced Keyword # from advanced_keywords.robot
Basic Keyword # from basic_keywords.robot
在测试套件中导入:
*** Settings ***
Resource all_keywords.robot
好处:
- 这在执行时起作用。
- 使用任何测试套件中的同一行,我们可以访问所有关键字。
- 我们不需要在每个高级关键字文件中导入必要的关键字,这会导致双重导入。
缺点:
- 不支持自动补全等,因为
advanced_keywords.robot不知道basic_keywords.robot。 - 在测试套件中导入许多(通常不使用)关键字,降低性能 (?)
提案2:参考basic_keywords...在advanced_keywords
@Todor 提议
advanced_keywords.robot:
*** Settings ***
Resource basic_keywords.robot
*** Keywords ***
Advanced Keyword
Basic Keyword # from basic_keywords.robot
more_advanced_keywords_1.robot:
Resource advanced_keywords.robot
# basic_keywords is imported here by advanced_keywords.robot
*** Keywords ***
My More Advanced Keyword
Advanced Keyword # from advanced_keywords.robot
Basic Keyword # from basic_keywords.robot
双重导入由 Robot Framework 处理。
在测试套件中导入:
*** Settings ***
Resource more_advanced_keywords_1.robot
Resource advanced_keywords_2.robot
好处:
- 这在执行时起作用
- 支持自动完成等,因为 IDE 知道
Advaned Keyword的定义位置 - 更好地控制哪些关键字可用,更快
缺点:
- 您必须明确决定/导入您在测试套件中使用的
advanced_keywords。
ROBOT_LIBRARY_SCOPE = 'GLOBAL' 中的SomeLibrary.py 可以防止库的双重实例化,请参阅Robot Framework makes two instances from the class instead of one 和Robot Framework User Guide
其他建议?
这两种建议各有利弊。有什么建议吗?你会建议什么结构?
【问题讨论】:
标签: robotframework