美文网首页
Robot Framework之数据驱动之Template模板

Robot Framework之数据驱动之Template模板

作者: keitwo | 来源:发表于2017-12-08 09:21 被阅读716次

    一、数据驱动之Template模板

    这里我们介绍RobotFramework一个很有用的功能——测试模板。测试用例中的关键字,例如:

    一个关键字测试模板

    运行此用例时,只会执行一次。但有时候我们需要连续执行这个关键字。如果我们连续写这个关键字,用例会显得很臃肿。

    RobotFramework提供了一个解决方案,在关键字前面加上一个[Template],表示这个用例是一个“测试模板”

    多个关键字测试模板

    执行结果:

    20171208 08:53:58.974 : INFO : 旺财

    20171208 08:53:58.974 :  INFO : 小四

    20171208 08:53:58.984 :  INFO : 李武

    这个测试用例里,“log”关键字被连续执行了三次。与普通的关键字写法不同,带有[Template]的关键字的参数不能和关键字同行。每带有一行参数,关键字就需要执行一次。熟悉QTP的朋友可能会觉得似曾相识

    需要特别注意的是,一个用例中只能使用一个[Template],不能多次使用。也不能带[Template]的关键字和普通的关键字混合使用。 利用“[Template]”,robotFramework可以轻松的实现数据驱动

    二、测试模板:关键字驱动 => 数据驱动

    关键字驱动: 用例主体由若干关键字+参数构成  

    数据驱动,:用例主体只由Template关键字的参数构成

    用途举例:

    对每个测试用例,或者一个测试文件中的所有用例,重复执行同一个关键字多次(使用不同数据),也可以只针对测试用例,或者每个测试文件只执行一次,模板关键字可以接受普通的位置参数,命名参数,关键字名中可以使用参数,不可以使用变量定义模板关键字。

    三、样例

    Demo1:[Template]会覆盖Setting Table中的template设置:如果[Template]为空值,意味着没有模板

    * Test Cases

    Normal test case

    Example keyword first argument second argument

    Templated test case

    [Template] Example keyword

    first argument second argument

    Demo2:对于多行数据,模板关键字会逐行调用执行,一次一行 如果其中有些失败,其他也会执行。 对于普通用例的continue on failure模式,对于模板关键字是缺省行为。

    Settings

    Test Template Example keyword

    Test Cases

    Templated test case

    first round 1 first round 2

    second round 1 second round 2

    third round 1 third round 2

    Demo3:模板关键字支持嵌入参数的语法,关键字名字就作为参数的持有者,在实际执行中这些参数会被模板关键字解析出实际的参数,传递给低级的底层关键字作为参数

    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 + 1 2

    1 + 2 3

    Keywords

    The result of ${calculation} should be ${expected}

    ${result} = Calculate ${calculation}

    Should Be Equal ${result} ${expected}

    Demo4:带有for循环的模板关键字

    Test Cases

    Template and for

    [Template] Example keyword

    :FOR ${item} IN @{ITEMS}

    \ ${item} 2nd arg

    :FOR ${index} IN RANGE 42

    \ 1st arg ${index}

    四、不同的测试用例风格

    关键字驱动

    1.描述工作流

    2.若干关键字和他们必要的参数

    数据驱动

    1.针对相同工作流,执行不同的输入数据

    2.只使用一个高级的用户关键字,其中定义了工作流,然后使用不同的输入和输出数据测试相同的场景

    3.每个测试中可以重复同一个关键字,但是test template功能只允许定义以此被使用的关键字

    行为驱动:

    1.描述工作流

    2.Acceptance Test Driven Development, ATDD

    3.Specification by Example

    4.BDD's Given-When-Then

    5.And or But,如果测试步骤中操作较多

    6.支持嵌入数据到关键字名

    Demo1:

    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}

    Demo2:

    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}

    Demo1和Demo2都是数据驱动的test template样例。

    Demo1有命令列,方便阅读理解; test template在setting table中定义; 每行有名字也方便查看结果(如果行数不是太多的话)

    Demo2在一个用例中完成所有的事情

    相关文章

      网友评论

          本文标题:Robot Framework之数据驱动之Template模板

          本文链接:https://www.haomeiwen.com/subject/vcrjixtx.html