Robotframework中类的全局实例

问题描述 投票:0回答:1

我在使用机器人框架时遇到问题,由于它很难调试,我很难找到问题的核心。 接下来,我将尝试尽可能详细地解释我的问题:

因此,想象一下我的桌子上有一个电源,我想通过 API 调用它。我将 API 导入到一个 python 文件中 - 让我们称之为 PowerSupply.py - 它由一个与文件同名的类组成。出于演示目的,文件中的代码已被简化。

#PowerSupply.py

import powersupplyapi

class PowerSupply():
   def __init__(self):
      self.connect = None
   
   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)

现在,我想在机器人框架中使用类方法作为关键字。想象一下文件夹结构是这样的:

| --source
    | --PowerSupply.py
| --tests
    | --__init__.robot
    | --01_test.robot
    | --02_test.robot
    | --resources/
        | --Resource.resource

在资源文件中我导入了库。

#Resource.resource

*** Settings ***
Library   ../source/PowerSupply.py

init.robot 文件中我导入了资源文件。

#__init__.robot
*** Settings ***
Resource ./resources/Resource.resource

现在,我想做的是实例化一次为库导入的类(最好在 init.robot 文件中),然后使用 01_test 和 02_test 中的关键字。现在的问题是测试显然不会访问类的相同实例,因此关键字将不起作用。

到目前为止,我尝试的是使用 init.robot 文件中的套件设置/拆卸,但遗憾的是这不起作用,因为测试没有通过类的同一实例。

在另一个教程中,我看到可以将类设置为全局变量,然后将其传递给测试。

*** Variables ***
${POWERSUPPLY_INSTANCE}=   Set Variable PowerSupply()

遗憾的是,这对我来说也不起作用,因为“设置变量”关键字似乎仅在测试用例中使用时才起作用。

我在这里缺少什么?有更多经验的人可以建议下一步尝试什么吗?这是否能按照我想要的方式工作?

我很高兴获得任何帮助,并想提前致谢!

python robotframework
1个回答
0
投票

您要做的就是定义库范围。默认情况下,robotframework 为每个测试用例创建新实例。要更改它,您应该添加到类定义中

ROBOT_LIBRARY_SCOPE = "GLOBAL"
。另外,最好在套件设置中的某个位置调用 connect 方法(从 RobotFramework 的角度来看,它是关键字),以避免依赖于某些特定的测试。

还有一件事。在您的示例中,您将文件命名为

x_test.robot
,但这些文件实际上是套件,可以有自己的套件设置和拆卸。如果您想对所有文件进行一个套件的设置和拆卸,您应该通过添加
__init__.robot
并在那里定义套件设置和拆卸来将目录转到另一个套件中。有关套件初始化文件的信息可以在here找到。

© www.soinside.com 2019 - 2024. All rights reserved.