python - robotsframework:定义类中可用的关键字

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

最佳答案

您可以定义方法get_keyword_names来显式定义哪些关键字要暴露给测试:

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

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

我个人反对这一点。正如您在问题中所说,这是违反直觉的。

如果您希望关键字库共享一些公共(public)代码,那么让 MyLibParentLib 都从一个公共(public)基类继承,可能比单独继承一个更好同时隐藏继承的功能。如果要隐藏这些函数,为什么要继承它?

关于python - robotsframework:定义类中可用的关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36434567/

相关文章:

python - 使用 Python API 创建 GCE 实例

exception - Selenium 和 headless (headless)环境

python - 如何访问yaml文件中另一个变量内的变量?

python - Robot Framework Internet Explorer 打不开

python - 如何使用 Python 和 lxml 解析本地 html 文件?

python - 使用Autotools编译python模块并将其安装到python库路径

python - 如何从列表中删除 unicode 中的\xa0

python - MultiCheckboxField 验证失败

robotframework - 如何使用 Robot Framework API 获取输出路径?

selenium - Robot Selenium - 在 CodeMirror 文本区域中输入文本