`
yeluowuhen
  • 浏览: 156185 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Robotframework的测试模板

 
阅读更多

     I 测试模板

    测试模板将普通的以关键字驱动的测试用例转化为以数据驱动的用例。不管这个关键字用例是由关键词或可能的参数组来构成。应用测试模板的测试用例只包含应用于模板关键词的参数。相比于将同一个关键词重复运行无数次,测试模板可以做到一次测试或一个文件只引用一次此关键字。

  模板关键词可以支持普通的位置及命名参数,也支持嵌入于关键字中的参数,不像其他的设置,它可以只用一个变量来定义一个模板。

       1.基本应用:

        可以用以下示例来说明如何使一个接受普通的位置参数的关键词应用于测试模板。这两个用例实现的功能是一致的。

 

*** Test Cases **
Normal test case
Example keywordfirst argumentsecond argument

Templated test case
    [Template]    Example keyword
first argumentsecond argument

         就像上面指出的,为一个测试用例设置templates来指明模板是可行的。另外一种替代方案是利用setting项中的Test Templates选项,此时即可将此模板应用到此测试文件的所有测试用例中。setting选项中的Templates可以覆盖setting列表中可能的模板设置项。如果[Template]中为空,此意味着即使是Test Templates,该用例也不使用模板。也可以使用None表示此用户不使用模板。

   如果一个设置了模板的测试用例有多行数据,意即所有行的数据均使用此模板。这意味着同一个关键词被重复执行了多次,每一行数据执行此关键词一次。即使是其中某些行运行失败,也不会影响其他行的执行。普通用例利用continue on failure也可以达到同样的效果,Test Templates模式是自动全部执行的。

*** Settings ***
Test TemplateExample keyword

*** Test Cases ***
Templated test case
first round 1first round 2
second round 1second round 2
third round 1third round 2

         如果参数为default valuesvarargs,抑或named argumentsfree keyword arguments,测试模板模式的调用与普通参数一致。在参数中应用variables也是正常支持的。

   2. 嵌入式参数的模板

   自从Robot Framework 2.8.2开始,模板支持一系列嵌入式参数的变体。如果模板使用的关键词在其他命名中置有变量,这些变量即可被置换为模板的变量,产生结果的关键词因此不用使用位置变量。举例如下:

*** Test Cases ***
Normal test case with embedded arguments
The result of 1 + 1 should be 2
The result of 1 + 2 should be 3

Template with embedded arguments
    [Template]    The result of ${calculation} should be ${expected}
1 + 12
1 + 23

*** Keywords ***
The result of ${calculation} should be ${expected}
    ${result} =    Calculate    ${calculation}
Should Be Equal    ${result}     ${expected}

   当模板使用嵌入式参数时,模板关键词的参数个数必须与使用时的个数一致,参数名称不必与原关键词的名称一致。可以用下面例子来说明:

 


 

*** Test Cases ***
Different argument names
    [Template]    The result of ${foo} should be ${bar}
1 + 12
1 + 23

Only some arguments
    [Template]    The result of ${calculation} should be 3
1 + 2
4 - 1

New arguments
    [Template]    The ${meaning} of ${life} should be 42
result21 * 2

   在模板中引入嵌入式参数的主要好处是参数名称被明确指定。当使用普通的变量时,通过命名所含参数的列来实现也可达到同样的效果。这在下一章的data-driven模式中可以看到。

  3. 循环中的模板

  如果在for循环中应用模板,模板是在循环的每一步中起作用。在这种情况下,continue on failure模式也可以正常使用,它意味着即使执行中有失败,所有在循环中的每一步也会被执行。

      II   不同的用例方式

  可以有不同书写方式的测试用例,描述测试流程的测试用例可以以关键字驱动或以数据来驱动,数据驱动是用来执行有着不同输入的同一段测试流程。

  1. 关键字驱动

  类似前面实现的Valid Login实现工作流的测试,是由一些关键字和参数组成。通常地结构是,首先将系统引入到初始化状态,之后执行一些动作比如输入名称,输入密码,提交凭证等,然后来验证系统的表现是否为预期(比如显示欢迎界面)。

  2. 数据驱动

  另一种书写用例的方式为数据驱动,此时测试用例普遍使用高级别的关键词,一般为user keyword将内部的流程隐藏起来。这些用例用来执行针对有着不同输入/输出的同一个场景时非常有效。它每次执行时可能是重复使用同一个关键词,但模板只需指定关键词一次。

*** Settings ***
Test Template    Login with invalid credentials should fail

*** Test Cases ***                USERNAME         PASSWORD
Invalid User Name                 invalid          ${VALID PASSWORD}
Invalid Password                  ${VALID USER}    invalid
Invalid User Name and Password    invalid          invalid
Empty User Name                   ${EMPTY}         ${VALID PASSWORD}
Empty Password                    ${VALID USER}    ${EMPTY}
Empty User Name and Password      ${EMPTY}         ${EMPTY}

   上面这个例子有六个独立的用例,每一个是无效用户名/密码的任意组合,下面的例子说明怎样用一用个测试用例来表示所有这些组合,当应用测试模板时,即使在执行过程中有失败,用例中的其他轮次也会执行,所以执行结果和上面是一致的。在上面的例子中,各个用例独立命名所以看起来比较易懂,但大量的类似用例则会做成统计的混乱。具体应用哪种方式,还需结合场景和个人喜好。

 

*** Test Cases ***
Invalid Password
    [Template]    Login with invalid credentials should fail
    invalid          ${VALID PASSWORD}
    ${VALID USER}    invalid
    invalid          whatever
    ${EMPTY}         ${VALID PASSWORD}
    ${VALID USER}    ${EMPTY}
    ${EMPTY}         ${EMPTY}

  3. 行为驱动

  也有可能需要写些非技术相关的利益相关者希望读懂的用例,这些可以执行类似要求的过程通常被称为验收测试驱动方式或标准示例。实现此方法的一种方式是行为驱动开发(BDD)提示的 Given-When-Then方式。当用这种方式编写用例时,初始状态一般表示为以Given开头,执行的动作则以When开始,预期结果写入到Then中,And或者 But则在有多个动作时使用到。

 

*** Test Cases ***
Valid Login
    Given login page is open
    When valid username and password are inserted
    and credentials are submitted
    Then welcome page should be open

 

Ignoring Given/When/Then/And/But prefixe

如果没有基于全名的搜索没有匹配到,那么当匹配的关键词被搜索到后,前缀Given-When-Then就会被丢掉。此规 d定对user keywords和library keywords均有效。比如,上面例子中Given login page is open不管有没有 Given,对于都会被当作user keywords执行, 忽略前缀也适用于带不同前缀使用同一个关键词的情景。比如Welcome page should be open可以用作And welcome page should be open。

 提示:Ignoring But prefix 是Robot Framework 2.8.7的新功能。

 

分享到:
评论

相关推荐

    robot framework报告汉化(使用后log文件日志看不了)

    Robot Framework 的测试报告和日志文件是由其内置的 `rebot` 工具生成的,这个工具使用特定的模板文件来呈现报告和日志的布局与内容。 描述中提到了两个关键文件:“report.html” 和 “view.js”,它们是 Robot ...

    RobotFramework自动化测试修炼宝典 测试环境搭建工具

    在压缩包子文件"RobotFramework自动化测试修炼宝典_环境搭建"中,可能包含详细的步骤指南、示例代码、配置文件模板等,这些都是帮助读者更好地理解和实践测试环境搭建的宝贵资源。仔细研读并动手实践,将是提升测试...

    Python-RobotFramework一个通用的自动化测试框架

    **Python-Robot Framework:通用自动化测试框架详解** Python-Robot Framework是一个强大且灵活的开源自动化测试框架,尤其适合于系统集成、验收测试以及端到端的业务流程验证。它的设计思路是面向关键字驱动,允许...

    robot-framework中文指南.pdf

    Robot Framework 的安装通常通过Python的包管理器pip完成,确保先安装Python环境,然后运行`pip install robotframework`即可。根据不同的操作系统和需求,可能还需要安装相应的库或插件。 4. **演示** 初次接触...

    robotframework用户指南

    - **测试模板**:通过定义模板关键字来简化测试用例的编写。 - **不同的测试用例模式**:可以使用不同的模式来定义测试用例,如关键字模式、模板模式等。 **2.3 创建测试集** - **测试用例文件**:单个测试文件可以...

    Robotframework-UserGuide2.7.7.pdf

    tidy是一个用于清理和格式化Robot Framework测试数据的工具,帮助用户维护测试脚本的清晰和一致性。 **5.4 Other tools distributed with Robot Framework(Robot Framework附带的其他工具)** 文档提到了与Robot ...

    Robot Framework User Guide

    Robot Framework是一个Python语言编写的,基于关键字驱动的自动化测试框架,广泛应用于端到端验收测试和验收测试驱动开发(ATDD)中。它支持分布式、异构应用测试,其中验证需要涉及多个技术与接口。 Robot Framework...

    robotframework 汉化报告结果文件

    robotframework 输出的测试报告为英文的,毕竟不是每个人都对测试相关的英语了解的,尤其是一些非技术类的人员,而自动化测试报告是自动化测试人员的工作结果呈现,因此汉化一下输出报告还是有必要的。

    RobotFramework基础教程.pdf

    1. 安装必要的库:`pip install robotframework robotframework-selenium2library` 2. 编写测试脚本(baidu_search.robot): ```robotframework *** Settings *** Library SeleniumLibrary *** Variables *** ${...

    robotframework 的eclipse开发插件,RED,包含三个版本

    Robot Framework 是一个开源自动化测试框架,它以关键字驱动的方式进行测试,支持多种库,可用于创建功能测试、验收测试以及回归测试。RED (Robot Editor) 是专门为 Robot Framework 设计的 Eclipse 插件,它极大地...

    Robot Framework 2.5.3 用户指南中文版

    - **测试模板**:可以为一组相似的测试用例定义模板,减少重复代码。 - **不同的测试用例模式**:根据测试需求,可以选择不同的模式来设计测试用例,如循环、条件语句等。 ##### 2.3 创建测试集 - **测试用例文件*...

    Jenkins+RobotFramework持续集成测试-jenkins环境搭建

    ### Jenkins+RobotFramework持续集成测试的关键知识点 #### Jenkins环境搭建步骤与注意事项 1. **下载与部署Jenkins** - **下载方式**:访问官方站点下载Jenkins的war包,适用于大多数操作系统。 - **运行方式**...

    面试题:robotframework题.pdf

    - 要在Python文件中定义自定义关键字,可以在函数前面添加装饰器`@Keyword('自定义名称')`,然后将这个函数导入到Robot Framework测试脚本中使用。 6. 解决找不到模块错误的命令行参数: - 当遇到找不到模块的...

    Robot Framework自动化测试修炼宝典

    5. **测试框架扩展**:了解如何通过插件、自定义报告和日志模板等手段,进一步定制和扩展Robot Framework。 通过深入学习和实践《Robot Framework自动化测试修炼宝典》,读者不仅可以掌握自动化测试的基本原理,还...

    robotframework-用户手册(中文版)-V2.5.3-对新手有帮助

    总的来说,"robotframework-用户手册(中文版)-V2.5.3-对新手有帮助.pdf" 这份文档将全面覆盖Robot Framework的基本概念、安装与配置、关键字的使用、测试数据的编写、执行与结果分析等多个方面,对于想要进入自动化...

    robotframework-接口自动化.pdf

    Robot Framework 是一个强大的自动化测试框架,它不仅支持UI自动化,也支持接口自动化。本文将详细介绍如何使用Robot Framework进行接口自动化测试。 首先,接口自动化测试的关键在于理解接口的功能和参数。例如,...

    robotframework-archetype-quickstart-1.0.1.zip

    总的来说,“robotframework-archetype-quickstart-1.0.1.zip”为那些希望快速启动Robot Framework测试项目的人提供了一个高效且灵活的起点。通过这个工具,开发者能够更专注于编写测试用例,而非花费大量时间在项目...

    Robot Framework Webdemo

    Robot Framework 是一个开源自动化测试框架,广泛应用于软件测试和质量保证领域。这个"Webdemo"项目是官方提供的一款示例,它展示了如何使用 Robot Framework 进行Web应用程序的自动化测试。虽然原始版本是基于...

    robotframework user guide

    **Robot Framework用户指南** Robot Framework是一个开放源代码的通用自动化框架,...通过阅读《robotframework user guide》中的详细内容,可以深入了解其工作原理和实践技巧,进一步提升自动化测试的效率和质量。

Global site tag (gtag.js) - Google Analytics