当有一个案例时,pybot没有制作测试套件

时间:2015-05-12 12:38:32

标签: python testing robotframework

我使用此命令运行pybot,

pybot --argumentfile a

文件' a'有机器人测试用例列表和变量参数,

-v test_type:SUITE
/home/sk/a.robot
/home/sk/b.robot

现在,测试用例使用id,s1-s1-t1和s1-s2-t2运行。 Output.xml包含,

<suite id="s1" name="A & B">
<suite source="/home/sk/a.robot" id="s1-s1" name="A">
<test id="s1-s1-t1" name="Log Test">...</test>

现在,我删除了一个案例并提交了一个&#39; a&#39;只有一个案例,

-v test_type:SUITE
/home/sk/a.robot

Output.xml包含,

<suite source="/home/sk/a.robot" id="s1" name="A">
<test id="s1-t1" name="Log Test">
      -----------------</test></suite>

Robot不再在父套件s1下创建子套件s1,而是运行带有id s1-t1的测试用例。这种创建测试套件的不一致方式使得我很难对output.xml进行DOM解析。

如果使用--argumentfile选项运行,是否有办法强制机器人始终创建测试套件。

1 个答案:

答案 0 :(得分:2)

当您只运行一个套件时,您无法让机器人自动添加此特殊的顶级套件。只有当您运行两个或更多套件时,Robot才会自动生成此顶级套件。

机器人框架用户指南中标题为Specifying test data to be executed的部分提到了此功能:

  

也可以为多个测试用例文件提供路径   目录一次用空格分隔。在这种情况下,机器人   Framework自动创建顶级测试套件,并且   指定的文件和目录成为其子测试套件。

注意:这与参数文件的使用完全无关。如果将参数直接放在命令行上,您将获得完全相同的结果。

重新思考如何运行套件

一种解决方案是启动测试运行一个文件夹:将所有套件放在一个文件夹中,并始终只运行该文件夹。这将始终为您提供始终如一的顶级套件。您仍然可以指定单个套件,但是按套件名称而不是文件名

例如,而不是:

-v test_type:SUITE
/home/sk/a.robot

你会这样做:

-v test_type:SUITE
--suite a
/home/sk

这有一个额外的好处,你可以创建一个总是得到应用的顶级套件初始化文件(例如:/home/sk/__init__.robot)。请参阅机器人框架用户指南中的Initialization files

注意:除了测试套件之外,如果/home/sk中还有其他内容,您可能希望将所有测试移至子文件夹(例如:/home/sk/tests/a.robot/home/sk/tests/b.robot等)