我使用此命令运行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
选项运行,是否有办法强制机器人始终创建测试套件。
答案 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
等)