测试数据的基本语法——自动化测试精解(5)

发表于:2021-1-05 10:08

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:刘云    来源:51Testing软件测试网原创

  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软件测试网获得人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号