簡體   English   中英

遠程 Robotframework 庫的實例化

[英]Instantiation of a remote Robotframework library

我試圖弄清楚如何獲取遠程庫的實例,而不僅僅是Remote object 的實例。

在我的示例中,我有一個名為 BoardIO 的遠程庫(實際上是在另一塊板上遠程)在BoardIORobotRemoteServer

from robotremoteserver import RobotRemoteServer

class BoardIO(object):

    def __init__(self):
        self.base = getBase()

    def write(self, value):
        self.base.write(value)

    def read(self):
        return self.base.read()

if __name__ == '__main__':
    RobotRemoteServer(BoardIO(), host=sys.argv[1], port=sys.argv[2])

在我的本地機器上,我有另一個庫,它將部分使用遠程BoardIO庫的功能。 使用BuiltIn().get_library_instance我現在想訪問我的遠程庫的實例。 例如,BoardIO.write function 可能有一個包裝器BoardIO.write ,如下所示:

def write_wrapper(self, value):
        board = BuiltIn().get_library_instance('mylib')
        board.write(value)

如果在機器人文件中我像這樣導入遠程 function

*** Settings ***
Library             Remote  http://${IP}:${PORT}    WITH NAME   mylib

然后BuiltIn().get_library_instance('mylib')返回Remote object 的實例,而不是BoardIO的實例。

我想做的是

*** Settings ***
Library             Remote  http://${IP}:${PORT}
Library             BoardIO

這樣我就可以做BuiltIn().get_library_instance('BoardIO') 但這不起作用,因為找不到庫 BoardIO。

也許有人遇到過類似的問題,可以幫助我嗎?

如果知道導入的遠程庫的唯一名稱,您可以執行以下操作:

def write_wrapper(self, value):
    BuiltIn().run_keyword('mylib.write', value)

或者,如果遠程庫的名稱作為 arg 傳遞給包裝庫。

def write_wrapper(self, value):
    BuiltIn().run_keyword(f'{self.mylib}.write', value)

如果您知道庫的名稱,框架將知道要調用什么,object。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM