[英]How could I get self object from python class in robotframework
Engine.py将导入几个类作为自身对象
Engine.py
from api import api
from cloud import cloud
class Engine(object):
def __init__(self, env):
session = dict()
self.api = api.API(session)
self.cloud= cloud.CLOUD(session)
api.py
class API(object):
def __init__(self, session):
self.session = session
def api_keyword(self):
return SOMETHING
我的问题是:
如何在api.py和cloud.py下使用关键字,并且只将Engine.py导入机器人文件
test.robot
*** Settings ***
Library Engine.py ${env}
*** Test Cases ***
python class test
[Tags] class
Engine.api.api_keyword
我收到错误消息:
找不到名为“Engine.api.api_keyword”的关键字。
Robot Framework只将类方法映射到关键字; 你的类Engine
没有暴露来自api
和cloud
任何方法 - 它可能在内部使用它们,但是没有将它们定义为它自己的方法。
所以这是您的第一个解决方案 - 为案例中所需的所有内容创建包装器方法:
def an_api_method(self):
self.api.something()
现在,您可以在案例中使用An API Method
关键字。
解决方案二 - 让你的类继承另外两个:
class Engine(api, cloud):
,您的案件将可以访问他们所有的公共方法。
这其中更涉及到-你必须调用它们的构造函数(与super()
如果你在你的类维持的状态,你必须适应这一点。 即需要更加激烈的代码更改。
第三种解决方案不需要对Enhine
代码进行任何更改 - 但是, 免责声明:我不知道它是否可行:)(我不在电脑上)。
它包含两个调用 - 首先使用Get Library Instance
获取导入库的对象(来自Builtin库),然后Call Method
:
${ref}= Get Library Instance Engine
Call Method $ref.api api_keyword
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.