You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RobotFramework中如何全局复用PowerSupply类实例?

问题分析

RobotFramework 默认会为每个测试套件/文件创建导入类的新实例,这就是不同测试文件无法共享同一个 PowerSupply 对象状态的核心原因。以下是几种可行的解决方案:


方案1:将 PowerSupply 改为单例模式

直接修改 Python 类,使其无论实例化多少次都返回同一个对象,从根源上解决实例共享问题:

# PowerSupply.py
import powersupplyapi

class PowerSupply():
    _instance = None

    def __new__(cls, *args, **kwargs):
        if not cls._instance:
            cls._instance = super().__new__(cls, *args, **kwargs)
            cls._instance.connect = None
        return cls._instance

    def connect(self):
        self.connect = powersupplyapi.connect()

    def set_voltage(self, voltage):
        self.voltage = powersupplyapi.set_voltage(voltage)

    def set_current(self, current):
        self.current = powersupplyapi.set_current(current)

修改后,所有测试文件导入该类时都会复用同一个实例,无需额外配置即可直接调用关键字共享状态。


方案2:通过全局变量共享实例

在套件初始化时创建实例并存储为全局变量,其他测试文件通过该变量调用方法:

  1. 修改 __init__.robot,在套件初始化中创建实例并设置全局变量:
# __init__.robot
*** Settings ***
Resource ./resources/Resource.resource
Suite Setup    Initialize Power Supply

*** Keywords ***
Initialize Power Supply
    ${ps_instance}=    Create Instance    PowerSupply
    Set Global Variable    ${POWER_SUPPLY}    ${ps_instance}
    ${POWER_SUPPLY}.Connect
  1. 在测试文件中直接调用全局变量的方法:
# 01_test.robot
*** Test Cases ***
Configure Power Supply
    ${POWER_SUPPLY}.Set Voltage    12.0
    ${POWER_SUPPLY}.Set Current    2.0

方案3:导入库时指定复用实例(RobotFramework 3.1+)

利用 RobotFramework 内置的 instance 参数,指定导入类时复用已创建的实例:

  1. 修改 Resource.resource:
# Resource.resource
*** Settings ***
Library    ../source/PowerSupply.py    instance=${POWER_SUPPLY}
  1. 在 __init__.robot 的套件初始化中创建实例并设置全局变量:
# __init__.robot
*** Settings ***
Suite Setup    Initialize Power Supply

*** Keywords ***
Initialize Power Supply
    ${ps_instance}=    Create Instance    PowerSupply
    Set Global Variable    ${POWER_SUPPLY}    ${ps_instance}
    ${POWER_SUPPLY}.Connect

后续所有导入该资源的测试文件都会自动复用 ${POWER_SUPPLY} 实例。


内容的提问来源于stack exchange,提问作者cer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 00:12:32