【问题标题】:Unable to call class methods with keyword defined in robot framework无法使用机器人框架中定义的关键字调用类方法
【发布时间】:2018-11-01 05:30:08
【问题描述】:

您好,我正在尝试创建自己的关键字并从机器人脚本中调用它:

下面是我的示例代码:

util.py

from robot.api.deco import keyword

@keyword('Add Num')
def add(a,b):
    print "Simple method"
    return int(a)+int(b)
class Geo :
    @keyword('Class Add Num')
    def addd(self,a,b):
        print "Inside class method "
        return int(a)+int(b)

Sample.robot

*** Settings ***
Library   util.py

*** Test Cases ***
TC_01
    [Documentation]  sample test
    [Tags]  Sample
    Add Num  10  20
    Class Add Num  10  2

我正在使用 pybot 命令运行 - pybot sample.robot

Add Num 关键字可以正常工作,但 Class Add Num 会报错:

No keyword with name 'Class Add Num' found.

我已尝试查看 stackoverflow 和官方机器人框架文档,但可以找到任何相关帮助。

如何解决这个错误,或者我需要以不同的方式实现它??

【问题讨论】:

  • 我知道这个问题是因为我没有实例化 Class 对象,
  • 要在类中引用函数,它必须类似于 filename.classname.fctionname
  • 如果该函数在您的类之外,则必须使用 filename.functionname 引用它

标签: python robotframework keyword


【解决方案1】:

Robot 不会自动在您的库中的类中实例化,除非在一种特殊情况下,即类名与文件名的基本部分相同。

编写库的正确方法是或者使用与文件名同名的单个类,函数,但不能同时使用两者。如果您想同时使用两者,则由您自己创建类的实例并公开关键字。

第三种方法是使用dynamic library api,您可以在其中创建特殊函数来获取可用关键字列表(get_keyword_names),并执行关键字(run_keyword)。这一切都记录在用户指南中。

【讨论】:

  • 感谢@Bryan,将查看动态库 api,保留类名和模块名并保持其工作状态。
猜你喜欢
  • 2017-11-01
  • 2022-11-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-16
  • 2019-08-10
  • 2013-11-08
  • 2018-08-01
  • 2020-04-21
相关资源
最近更新 更多