【问题标题】:pybot not making test suite when there is a single case当只有一个案例时,pybot 不制作测试套件
【发布时间】: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 选项运行机器人,是否有办法强制机器人始终创建测试套件。

【问题讨论】:

    标签: python testing robotframework


    【解决方案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、等)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-29
      • 2014-10-13
      • 2011-05-10
      • 2016-11-01
      • 2016-12-13
      相关资源
      最近更新 更多