《我的RobotFramework书》1-4 测试套件, Test Suite

测试套件, Test Suite


作者: 虞科敏

测试用例 => Test File => 以目录进行组织

Test Case Files

一个文件中用例数建议 <10; 如果用例数过多建议考虑数据驱动

用例文件会自动创建一个包含文件中所定义用例的测试套件, TestSuite

Test Suite Dirctories

test case files被组织为目录, 这些目录形成更高级的suite。

由目录创建的test suite不能有任何直接的测试用例(Test Cases), 但可以包含其他带有测试用例的suite。

这些目录又可以被放进其他目录,形成更高级的suite。 包含的层级深度有没有特别的限制。

当一个测试目录被执行,它包含的文件和目录按以下方式递归处理:

  1. 以"."和"_"开始的文件和目录被跳过
  2. 目录名为CVS(大小写敏感)被跳过
  3. 扩展名非法(有效扩展名: .html, .xhtml, .htm, .tsv, .txt, .rst, or .rest)的文件被跳过
  4. 其他文件和目录被处理

    Tips: 如果文件或目录不包含任何测试用例Test Case,会被静默地跳过; 如果需要产生警告,可以在命令行使用 --warnonskippedfiles

初始化文件

目录创建的Suite可以拥有和Test Case File创建的suite相似的设置,这些设置信息被放在Suite初始化文件中。
格式: __init__.ext (Pythoner们是不是觉得很熟悉,RF借用了python的命名方式,不过做的事情和python的__init__.py有些不同)
合法的.ext:

  • .html, .htm and .xhtml for HTML
  • .tsv for TSV
  • .txt and special .robot for plain text
  • .rst and .rest for reStructuredText

除了不能拥有Test Case Table,Setting内容有一定限制外, __init__.ext和test case file的结构和语法都保持一致.

在__init__中创建或引入的变量Variables和关键字Keywords,对于其子suite并不可用;如果你需要共享这些变量和关键字, 你需要考虑使用resource file, 它们可以被__init__和test case file同时使用。

__init__.ext的主要用途在于指定类似在test case file中进行的suite相关设置; 另外一些case相关设置也可能在这里进行:

  • Documentation, Metadata, Suite Setup, Suite Teardown: 参考test case file部分
  • Force Tags: 无条件的指定本目录下的所有用例(直接或递归地)标签
  • Test Setup, Test Teardown, Test Timeout: 指定本目录下的所有用例(直接或递归地),可以被更低级别层面的定义覆盖
  • Default Tags, Test Template: 不支持!!!!!!!!

样例

Settings 
Documentation Example suite
Suite Setup Do Something ${MESSAGE}
Force Tags example
Library SomeLibrary

Variables 
${MESSAGE} Hello, world!

Keywords 
Do Something

[Arguments] ${args}
Some Keyword ${arg}
Another Keyword

定制化Test Suite

名字

Suite Name来自测试文件名或者目录名。 参考举例来理解,不复杂:
some_tests.html => suite name: Some Tests
My_test_directory => suite name: My test directory

可以添加前缀(pre__, 2个下划线)来指定执行顺序,但是前缀不会被包含在suite name中。
01__sometests.txt => suite name: Some Tests
02\
_more_tests.txt => suite name: More Tests
Some Tests在More Tests前被执行

命令行选项--name,可以覆盖top-level suite的name定义

文档

可以在Setting Table里用Documentation设置: 可以在test case file中,或者高级suite的__init__文件中

命令行选项--doc,可以覆盖top-level suite的documentation定义

样例

Settings 
Documentation An example test suite documentation with some formatting.
... See test documentation for more documentation examples.

元数据

其他元数据可以在Setting Table里用Metadata设置: 以此方式定义的元数据会显示在测试报告和日志中。

命令行选项--metadata,可以覆盖top-level suite的metadata定义

Settings 
Metadata Version 2.0
Metadata More Info For more information about Robot Framework seehttp://robotframework.org
Metadata Executed At ${HOST}

Suite Setup和Suite Teardown

测试固定件Fixture: setup和teardown的语义,和其他测试框架没有太多不同。 很多情况也和Tese Case的fixture差不多,可以参考Test Case的相关章节。
也是推荐只使用一个关键字

如果suite setup失败, suite下的所有测试用例和它的子suite都会被标记为失败,并且不会再被执行。 所以suite setup适合用于检查必须满足的前提条件。

suite teardown和test case teardown很类似,也满足continue on failure模式。 如果suite teardown失败, suite下的所有用例被标记为失败, 不管之前这些用例的执行结果如何.

作为setup或者teardown的被执行的关键字名可以为变量Varialbe。

小技巧: 可以通过命令行来指定变量,来实现不同环境执行不同的setup和teardown

你可能感兴趣的:(RF)