如何在 Robot Framework 中的侦听器和(一个或多个)测试用例之间传递信息?

How to pass information between a listener and a (one or more) test cases in Robot Framework?

我有一个测试需要将结果写入数据库。我想通过侦听器中的 startSuite 函数建立与数据库的连接(使用用户名、密码、数据库、主机)(这将 运行 在所有测试用例的开头)并在 endSuite 中关闭它。我的问题是,如何将连接(或游标)传递回机器人框架代码以在测试用例中使用。 目前我正在这样做:

*** Test Cases ***
RecordinTestflow
    Setup1
    ${return} =   Record Start in Testflow  ${data}

其中 Setup1 是一个 python 函数,它将设置连接,RecordStartinTestFlow 将使用该连接。我想将 Setup1 移动到侦听器 python 脚本。

谢谢。

外部侦听器无法向测试用例发送信息。但是,如果您使用关键字库作为侦听器,则可以。缺点是你必须在测试套件中导入监听器,而不是在命令行中指定它。

机器人框架用户指南的章节标题 Test libraries as listeners 描述了如何操作。

这是一个人为的例子,展示了侦听器方法如何设置测试用例随后可以使用的套件变量。

一、听众:

from robot.libraries.BuiltIn import BuiltIn

class ListenerExample(object):
    ROBOT_LISTENER_API_VERSION = 2
    ROBOT_LIBRARY_SCOPE = "GLOBAL"

    def __init__(self):
        self.ROBOT_LIBRARY_LISTENER = self

    def _start_suite(self, name, attrs):
        message = "hello, world"
        BuiltIn().set_suite_variable("${from listener}", message)

接下来,一个简单的测试用例展示了如何在套件启动后立即设置变量。请注意,测试本身并未定义 ${from listener}。相反,一旦调用侦听器方法,它就会被定义。

*** Settings ***
| Library | ListenerExample.py

*** Test Cases ***
| Example of getting data from a listener
| | should be equal | ${from listener} | hello, world

在您的情况下,当然,您可以将 message 更改为您的数据库游标或您想要的任何其他内容。

当然你也可以在这个库里放关键字,你也可以用