机器人框架 - 发布消息后发送钩子

时间:2015-05-06 09:06:23

标签: python robotframework

我在一个pybot命令中运行多个测试套件,如下所示,

pybot suite1.robot suite2.robot suite3.robot

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

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

现在,需要将此词典发布到kafka /任何消息传递代理。我喜欢这个功能写在一个后运行的钩子函数/机器人案例中,它将在所有机器人案例结束时只运行一次。

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

1 个答案:

答案 0 :(得分: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的部分。为此,您的测试必须将字典写入文件。

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