如何在Robot文件的Keyword部分调用Python文件中的类方法?
解决Robot Framework调用Python类方法的问题
问题原因
你的代码存在两个核心问题:
- Python语法错误:类定义需用小写
class而非Class;实例方法定义必须带括号(且需包含self参数),比如def func(self):。 - Robot导入逻辑错误:直接导入
a.py模块时,Robot不会自动实例化其中的abc类,因此无法直接调用类内的func方法。
解决方案
以下三种方式均可实现需求,可根据场景选择:
方式一:直接导入类作为Robot库
修正Python语法后,在Robot中通过模块名.类名的方式导入类,Robot会自动完成实例化:
修正后的a.py
class abc: def func(self): # 写入你的方法逻辑 return "执行func方法"
修改后的x.robot
Library a.abc *** Keywords *** Calling abc ${执行结果}= func Log ${执行结果}
方式二:在Python模块中暴露类方法到模块级别
如果不想改变Robot的导入语句,可在a.py中实例化类,并将方法绑定为模块级函数:
修改后的a.py
class abc: def func(self): return "执行func方法" # 实例化类并将方法暴露为模块级变量 abc_instance = abc() func = abc_instance.func
x.robot保持原导入方式即可
Library a.py *** Keywords *** Calling abc func
方式三:手动实例化类并调用方法
使用Robot内置关键字手动创建类实例,再调用方法,适合需要控制实例化过程的场景:
x.robot
Library a *** Keywords *** Calling abc # 创建abc类的实例 ${abc实例}= Create Instance a.abc # 调用实例的func方法 ${执行结果}= Call Method ${abc实例} func Log ${执行结果}
内容的提问来源于stack exchange,提问作者Satyaki Chatterjee
相关产品推荐
相关产品推荐

