【问题标题】:Robot framework - Post run hook to send message机器人框架 - 运行后挂钩以发送消息
【发布时间】:2015-07-16 07:47:17
【问题描述】:

我像这样在一个 pybot 命令中运行多个测试套件,

pybot suite1.robot suite2.robot suite3.robot

现在,这些机器人套件中的每一个都将一个键值添加到一个全局字典中(这个测试变量包含一些需要返回给测试调用者的指标),

{ "suite1-res" : xxxx,
"suite2-res" : yyyy,
"suite3-res" : zzzz }

现在,这本字典需要发布到 kafka/任何消息代理。我喜欢将此功能编写在运行后挂钩函数/机器人案例中,该功能将在所有机器人案例结束时仅运行一次。

能否将此运行后挂钩功能添加为运行时参数(如 suite teardown),而不是将其作为额外的机器人测试用例参数传递。

【问题讨论】:

    标签: python robotframework


    【解决方案1】:

    使用套件文件

    如果您将所有这些套件放在一个文件夹中,您可以在文件夹中附加套件拆解,该拆解将在所有子套件完成后运行。

    $ mkdir all_tests
    $ mv suite*.robot all_tests
    $ # edit all_tests/__init__.robot to have a suite teardown
    $ pybot all_tests
    

    使用监听器

    您可以使用侦听器,它可以收集数据并运行后处理步骤。例如,您的测试可以将指标附加为套件元数据,当为每个套件调用 end_suite 时,侦听器将获得这些元数据。侦听器可以存储所有这些元数据,然后在调用close 时对其进行处理。有关更多信息,请参阅机器人框架用户指南中的Using the listener interface,以及内置库中Set Suite Metadata 关键字的文档。

    编写自定义脚本

    有关详细信息,请参阅机器人框架用户指南中标题为 Test Suite Directories 的部分。为此,您的测试必须将字典写入文件。

    您的另一个选择是编写一个简单的 bash 或批处理脚本来运行 pybot 命令,然后执行您想要的任何后期处理。您的测试需要以某种方式使字典数据可用。例如,您可以将数据存储为suite metadata,然后让后处理步骤将该数据从 output.xml 中提取出来。或者,您的套件可以将数据写入文件。

    【讨论】:

    • 我不喜欢文件夹方法,因为用户可能不会一直运行所有机器人测试。关于 bash 脚本,pybot 进程如何将字典对象传递给 bash 脚本,Bryan?
    • @MadhavanKumar:您可以为所有测试和套件提供适当的标签,然后用户可以排除测试的子集。
    • @MadhavanKumar:我已经更新了我的答案以包含第三个选项
    • 感谢 Bryan,我更喜欢您的第二种方法 - 使用带有套件元数据的侦听器...当我使用套件元数据时,每个机器人文件都需要包含额外的行来设置元数据。这是一个额外的负担。而不是套件元数据,侦听器是否可以访问全局测试变量/字典?我正在尝试使用已经存在的变量而不是套件元数据...
    • @MadhavanKumar:我不知道。您可能无权访问套件变量。试试看。最重要的是,如果您有多个独立的套件,机器人将无法进行套件拆解。正确的 IMO 解决方案是将它们全部收集到一个全局套件中,这为您提供了更大的灵活性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-05
    • 1970-01-01
    • 2021-10-14
    • 2021-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多