当只有一个案例时,pybot 不制作测试套件
Posted
技术标签:
【中文标题】当只有一个案例时,pybot 不制作测试套件【英文标题】:pybot not making test suite when there is a single case 【发布时间】:2015-07-23 08:14:12 【问题描述】:我使用这个命令运行 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>
现在,我删除了一个案例,文件“a”只有一个案例,
-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>
机器人不再在父套件 s1 下创建子套件 s1,而是运行 ID 为 s1-t1 的测试用例。这种创建测试套件的不一致方式让我难以对 output.xml 进行 DOM 解析。
如果使用--argumentfile
选项运行机器人,是否有办法强制机器人始终创建测试套件。
【问题讨论】:
【参考方案1】:当您只运行一个套件时,您无法让机器人自动添加这个特殊的***套件。只有当您运行两个或更多套件时,Robot 才会自动生成此***套件。
机器人框架用户指南的标题为Specifying test data to be executed 的部分中提到了此功能:
也可以提供多个测试用例文件的路径或 目录一次,用空格分隔。在这种情况下,机器人 框架自动创建顶层测试套件,并且 指定的文件和目录成为它的子测试套件。
注意:这与参数文件的使用完全无关。如果将参数直接放在命令行上,您将得到完全相同的结果。
重新思考如何运行套件
一种解决方案是开始测试运行一个文件夹:将所有套件放在一个文件夹中,并始终只运行该文件夹。这将始终为您提供一致的***套件。您仍然可以指定单独的套件,但使用套件名称而不是文件名
例如,而不是这个:
-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
、等)
【讨论】:
以上是关于当只有一个案例时,pybot 不制作测试套件的主要内容,如果未能解决你的问题,请参考以下文章
在 Python 中测试另一个线程的结果时,当断言失败时,PyTest 测试套件是不是通过?
Xcode UI 测试 - 当测试套件中的任何给定测试失败时停止测试?