3.2 测试数据的基本语法
本节主要介绍Robot Framework测试数据的基本语法和使用方法。Robot Framework是用Python写的,所以和Python在很多地方有类似的定义和用法。
3.2.1 测试数据的结构
一个测试文件可以分成4部分—Settings、Variables、Test Case和Keywords。每部分下面有些特殊的标记符号。其结构和每一部分的解释如下。
*** Settings *** #配置部分 Documentation #本测试套件的描述文档 Suite Setup #进入本测试套件的准备工作 Suite Teardown #收尾工作,完成测试套件里所有测试用例后执行的步骤 Test Setup #本测试套件的每一测试用例里默认的准备工作 Test Teardown #本测试套件的每一测试用例里默认的收尾工作 Force Tags #强行给每个测试用例设置标签 Default Tags #没有标签的测试用例默认使用这里设置的标签 Test Template #测试用例的测试模板 Test Timeout #测试套件的超时时间 Resource #引用的资源文件 Library #应用的测试库 Variables #变量文件 ***? Variables?*** #变量定义部分 ${var} #定义一个Scalar变量 @{list} #定义一个List变量 &{dict} #定义一个Dictionary变量 *** Test?Cases?*** #测试用例部分 Hello_TestCase #测试用例名字 [Documentation] #测试用例的文档说明 [Tags] #给测试用例设置某些标签 [Setup] #定义测试用例的准备工作,会覆盖测试套件里的定义 [Template] #测试用例模板 [Timeout] #测试用例运行的超时时间 step1 #测试用例的具体实现步骤 step2 …… [Teardown] #定义测试用例的收尾工作,会覆盖测试套件里的定义 *** Keywords *** #关键字部分 Keyword_Name #关键字名字 [Arguments] #关键字输入参数列表 [Documentation] #关键字的文档说明 [Tags] #关键字的标签 [Timeout] #关键字运行的超时时间 step1 #关键字的具体实现步骤 step2 …… [Teardown] #关键字的收尾工作 [Return] #关键字的返回值 |
需要说明的是,并不是每个文件都必须有这些部分。测试文件分为测试套件文件、测试主目录的__init__文件和资源文件这3种。测试套件文件里可以包含所有部分,也可以只包含“*** Test Cases ***”部分。
资源文件比较特殊,它不能有“*** Test Cases ***”部分。“*** Settings ***”部分也最多只能有Documentation、Resource、Library和Variables。?“ *** Variables ***”和“*** Keywords ***”部分(和测试套件一样)可以都包含。一般资源文件主要的功能就是存放公用的关键字。
测试工程介于测试套件和资源文件之间,它虽然也不能包含“*** Test Cases ***”部分,但是可以有Suite Setup、Suite Teardown等。__init__文件用于定义本目录下公用的关键字、变量和统一的Setup/Teardown操作。
表3-1总结出了测试工程、测试套件和资源文件各部分的异同。M表示必须有,O表示可选,X表示不支持。
3.2.2 文件格式
Robot Framework支持的文件格式包括ROBOT、TXT、TSV和HTML,但是从3.1版本开始默认使用ROBOT格式。如果使用其他格式文件,需要在执行测试用例时采用“--extension <格式>”告诉Robot命令用什么格式解释测试数据。示例如下。
robot --extension txt /path/to/testdata
文件格式是不区分大小写的,txt和TXT都可以使用。如果有多种格式的测试文件,可以用冒号(:)分隔。示例如下。
--extension txt:tsv
后续的Robot Framework版本可能会只支持ROBOT格式,所以建议尽量使用ROBOT格式。不管用什么格式保存文件,在RIDE界面上看到的测试用例都用统一的表格形式展现。然而,如果用其他工具打开,显示的结果会不一样。
ROBOT和TXT都是文本格式,各个元素之间用4个空格分隔。例如,hello_RF使用TXT或ROBOT格式,其测试数据如下。
*** Settings *** Documentation 我的第一个Robot Framework 测试用例 *** Test Cases *** case 1 ${myChar} Set?Variable Hello Robot Framework Log ${myChar} Should Be Equal As Strings ${myChar} Hello Robot Framework |
如果使用TSV格式,测试数据如图3-21所示。
图3-21 TSV格式的测试数据
测试数据之间不以4个空格分隔,而以一个制表符分隔。
如果使用HTML格式,测试数据如图3-22所示。
图3-22 HTML格式的测试数据
看上去HTML格式的测试文件非常整齐和美观,为了达到这种美观的效果,Robot Framework自动在背后添加了很多内容。从源码层级来看,ROBOT、TXT和TSV格式和上面显示的一样,但是HTML格式就复杂多了。这个HTML格式的hello RF的源代码如下。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <style type="text/css"> html { font-family: Arial,Helvetica,sans-serif; background-color: white; color: black; } table { border-collapse: collapse; empty-cells: show; margin: 1em 0em; border: 1px solid?black; } th, td { border: 1px solid black; padding: 0.1em 0.2em; height: 1.5em; width: 12em; } td.colspan4, th.colspan4 { width: 48em; } td.colspan3, th.colspan3 { width: 36em; } td.colspan2, th.colspan2 { width: 24em; } th { background-color: rgb(192, 192, 192); color: black; height: 1.7em; font-weight: bold; text-align: center; letter-spacing: 0.1em; } td.name { background-color: rgb(240, 240, 240); letter-spacing: 0.1em; } td.name, th.name { width: 10em; } </style> <title>hello RF</title> </head> <body> <h1>hello RF</h1> <table border="1" id="setting"> <tr> <th class="name" colspan="5">Settings</th> </tr> <tr> <td class="name">Documentation</td> <td class="colspan4" colspan="4">我的第一个Robot Framework 测试用例</td> </tr> <tr> <td class="name"></td> <td></td> <td></td> <td></td> <td></td> </tr> </table> <table border="1" id="testcase"> <tr> <th class="name" colspan="5">Test Cases</th> </tr> <tr> <td class="name"><a name="test_case 1">case 1</a></td> <td>${myChar}</td> <td>Set Variable</td> <td>Hello Robot Framework</td> <td></td> </tr> <tr> <td class="name"></td> <td>Log</td> <td>${myChar}</td> <td></td> <td></td> </tr> <tr> <td class="name"></td> <td>Should Be Equal As Strings</td> <td>${myChar}</td> <td>Hello Robot Framework</td> <td></td> </tr> </table> </body> </html> |
测试文件一般放在版本控制工具(如SVN或GIT)里。如果用HTML格式保存文件,在版本控制工具里就难以比较两个版本之间的改动。从减少维护的成本角度考虑,不推荐使用HTML格式保存文件。
不管用什么格式保存测试文件,我们在RIDE中看到的都是统一的界面,如图3-23所示。
图3-23 RIDE中展示测试文件的统一界面
所以,从美观的角度来说,HTML格式也丧失了优势。借助RIDE,其他文件格式也可以像HTML格式一样以表格的形式展现测试数据。
在本书中,为了排版美观,有时会使用表格格式,有时会使用文本格式。不管用什么格式,其本质都是一样的。
版权声明:51Testing软件测试网获得人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。