我在使用机器人框架时遇到问题,由于它很难调试,我很难找到问题的核心。 接下来,我将尝试尽可能详细地解释我的问题:
因此,想象一下我的桌子上有一个电源,我想通过 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()
遗憾的是,这对我来说也不起作用,因为“设置变量”关键字似乎仅在测试用例中使用时才起作用。
我在这里缺少什么?有更多经验的人可以建议下一步尝试什么吗?这是否能按照我想要的方式工作?
我很高兴获得任何帮助,并想提前致谢!
您要做的就是定义库范围。默认情况下,robotframework 为每个测试用例创建新实例。要更改它,您应该添加到类定义中
ROBOT_LIBRARY_SCOPE = "GLOBAL"
。另外,最好在套件设置中的某个位置调用 connect 方法(从 RobotFramework 的角度来看,它是关键字),以避免依赖于某些特定的测试。
还有一件事。在您的示例中,您将文件命名为
x_test.robot
,但这些文件实际上是套件,可以有自己的套件设置和拆卸。如果您想对所有文件进行一个套件的设置和拆卸,您应该通过添加 __init__.robot
并在那里定义套件设置和拆卸来将目录转到另一个套件中。有关套件初始化文件的信息可以在here找到。