robotframework:定义类中的可用关键字

时间:2016-04-05 18:44:24

标签: python robotframework

我有一个库作为模块中的类实现:

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手动导入它。这是可能的,还是我需要重新组织我的库的实现方式?

1 个答案:

答案 0 :(得分:3)

您可以定义方法get_keyword_names以明确定义哪些关键字会暴露给测试:

class MyLib(ParentLib):
    ...
    def get_keyword_names(self):
        return ["keyword"]

机器人框架用户指南将其称为hybrid library

就个人而言,我会反对这一点。就像你在问题中所说的那样,这是违反直觉的。

如果你想让关键字库共享一些公共代码,那么让MyLibParentLib都从公共基础继承而不是让一个继承自另一个,同时隐藏继承的功能。如果你要隐藏这些功能,为什么要从中继承呢?