Python 有没有办法将连接到硬件的对象传递到机器人框架?
我想用Robot框架测试一个硬件设备。由于我不想在每个测试用例中再次断开和连接我的设备,我想知道是否有可能在Robot框架之外初始化Python对象,但在它内部使用它 请参见我的代码示例,如下所示: Main.py:Python 有没有办法将连接到硬件的对象传递到机器人框架?,python,robotframework,Python,Robotframework,我想用Robot框架测试一个硬件设备。由于我不想在每个测试用例中再次断开和连接我的设备,我想知道是否有可能在Robot框架之外初始化Python对象,但在它内部使用它 请参见我的代码示例,如下所示: Main.py: from robot import run from SomeLibraryUsedByRobot import SomeLibraryUsedByRobot device = Device() SomeLibraryUsedByRobot.device = device ru
from robot import run
from SomeLibraryUsedByRobot import SomeLibraryUsedByRobot
device = Device()
SomeLibraryUsedByRobot.device = device
run('SomeRobotFile.robot')
SomeLibraryUsedByRobot.py:
class SomeLibraryUsedByRobot:
device = None
def access_device(self):
device.some_function()
SomeRobotFile.robot:
*** Settings ***
Library SomeLibraryUsedByRobot.py
*** Test Cases ***
Some Test
Access Device
主文件的执行导致错误'NoneType'对象没有属性某些函数
,这使我得出结论,主文件中库的字段设备
的初始化不起作用
我还使用robot框架的侦听器界面及其函数库导入(self、name、attributes)
尝试了我的计划
MyListener.py:
class MyListener:
ROBOT_LISTENER_API_VERSION = 2
def library_import(self, name, attributes):
if name == "SomeLibraryUsedByRobot":
device = Device()
SomeLibraryUsedByRobot.device = device
print( "SomeLibraryUsedByRobot initialized with device" )
当我尝试使用侦听器时,我直接从控制台(而不是main.py)执行robot文件。我还在库类中添加了一行:ROBOT\u library\u SCOPE='testsuite'
library\u import(…)
函数肯定会被调用,因为我看到了控制台上的打印。但是第一次尝试的结果是一样的:'NoneType'对象没有属性some\u function
基本上,我们不必在讨论中涉及任何硬件。我只想将一些python对象从外部传递到robot框架使用的库中。你看到解决方案了吗?在你的
SomeLibraryUsedByRobot
中创建一个关键字来打开/初始化设备,并创建一个关键字来关闭/删除设备
class SomeLibraryUsedByRobot:
# Called upon library import for more: http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#library-scope
def __init__(self):
self.device = None
def access_device(self):
self.device.some_function()
def init_device(self):
self.device = Device()
def deinit_device(self):
self.device.deinit()
self.device = None
现在,为了避免连接,在每个测试用例中断开连接,请在中调用这些关键字
通常采用Telnet或SeleniumLibrary等其他现有库中使用的方法,其中有Open…
和Close…
关键字来管理与浏览器的连接,或者Telnet与服务器或硬件的连接,等等
对于多个设备,您可以使用管理多个连接。许多现有的库都在使用它
*** Settings ***
Library SomeLibraryUsedByRobot
Suite Setup Init Device
Suite Teardown Deinit Device
*** Test Cases ***
Case 1
Access Device
Case 2
Access Device
Case 3
Access Device
Case 4
Access Device