我有一个库作为模块中的类实现:
MyLib.py
class MyLib(ParentLib):
def __init__(self):
#do stuff
pass
def keyword(self, arg1):
robot.api.logger.console('keyword')
ParentLib.py
class ParentLib:
def __init__(self):
pass
def parent_keyword(self, arg):
robot.api.logger.console('parent keyword')
我可以使用 Library MyLib
毫无问题地导入此库。这可能看起来违反直觉,但我想阻止 MyLib 提供 Parent Keyword
。即,如果用户想要 Parent Keyword
,我希望他们被迫使用 Library ParentLib
手动导入它。这是可能的,还是我需要重新组织我的库的实现方式?
最佳答案
您可以定义方法get_keyword_names
来显式定义哪些关键字要暴露给测试:
class MyLib(ParentLib):
...
def get_keyword_names(self):
return ["keyword"]
机器人框架用户指南将此称为 hybrid library 。
我个人反对这一点。正如您在问题中所说,这是违反直觉的。
如果您希望关键字库共享一些公共(public)代码,那么让 MyLib
和 ParentLib
都从一个公共(public)基类继承,可能比单独继承一个更好同时隐藏继承的功能。如果要隐藏这些函数,为什么要继承它?
关于python - robotsframework:定义类中可用的关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36434567/