zoukankan      html  css  js  c++  java
  • RobotFramework自动化测试框架(2)- RobotFramework语法

    • RobotFramework测试用例是由四部分组成的,下面就从这四个部分简单介绍语法:
    • 关键字表 *** Keywords ***
    • 设置表 *** Settings ***
    • 变量表 *** Variables ***
    • 测试用例表 *** Testcases ***

    1、关键字表

    关键字表是干什么用的?

    组合已有的关键字(包括库关键字和其他用户关键字)来创建新的高层次的关键字,也就是用户关键字。因此,关键字表是存放用户关键字的

    用户关键字的组成:

    1、用户关键字的名称

    应该具备描述性,使用很长的关键字名称也是可以的。

    2、用户关键字的设置项

    • 用户关键字的文档:通过 [Documentation] 设置。在关键字文档的开始部分使用 *DEPRECATED* 可以标记该用户关键字已经不建议使用,如果使用则会触发一个警告。
    • 用户关键字的标签:通过 [Tags] 设置。带 robot- 前缀的标签名将作为保留。普通用户需避免使用 robot- 前缀的标签。
    • 用户关键字的参数:通过 [Arguments] 设置。参数名称的语法格式和变量一样,如 ${arg}

    下面是用户关键字的参数说明:

    1. 首先是 [Arguments],后面是声明的参数名称。每个参数占一个单元格,参数名称的语法格式和变量一样。
    2. 当关键字被调用时,需要传递和此处定义相同数量的参数。
    3. 参数的名称推荐使用小写字母作为名称,如:${my_arg},${my arg} 或 ${myArg}。
    4. 为参数添加默认值只需要在参数名后面跟上等号(=),然后跟上默认值即可。例如 ${arg}=default。
    5. 可以为多个参数指定默认值,指定默认值的参数必须跟在普通的位置参数后面。
    6. 默认值的语法是对空格敏感的。等号 = 前面不允许有空格,而等号后面的空格则被视作默认值的一部分。
    7. 只需在关键字的参数签名中使用列表变量如 @{varargs} 作为参数声明。
    8. 同时不定数量的参数可以和默认值参数混用,前面的参数先进行匹配,列表参数最终接受所有剩余的参数,数量可以是0个到任意个。
    9. 只需在参数列表的最后,在位置参数和任意数量参数的后面,使用字典变量,如 &{kwargs}。
    10. 当该关键字被调用时,前面没有被匹配的 命名参数 都会传递给该参数。
    • 用户关键字返回值:通过 [Return] 设置。

    最常见的情况是用户关键字返回一个值,并且赋值给一个标量变量。直接将返回值放在 [Return] 设置后面的单元格内。
    用户关键字还可以返回多个值,这些值可以一次性赋给多个标量、或者一个列表变量、或者两者混合。多个值只需依次跟在 [Return] 后面的单元格中即可。

    • 用户关键字的 Teardown:通过 [Teardown] 设置 。

    teardown 在当前关键字执行失败时也会被调用。此外,teardown 内的所有步骤都会执行到,即使其中某个步骤失败。不过,teardown 的失败会导致当前用例执行失败,并且该用例余下的步骤将不再执行。

    例子:

    1 *** Keywords ***
    2 f1
    3     [Documentation]    Demo
    4     [Tags]    one    two
    5     [Arguments]    ${a}    ${b}=default value
    6     Log    ${a}+${b}    
    7     [Return]    ${a}
    8     [Teardown]    Log    ${b}

    3、调用的其他关键字

    也就是,已有的关键字(包括库关键字和其他用户关键字)。

     

    2、设置表

    作用:

    导入普通标准库:Library

    导入远程库:Library

    导入资源文件:Resource

    导入变量文件:Variables

    导入扩展测试库:Library

    1 *** Settings ***
    2 Library    Selenium2Library
    3 Library    OperatingSystem    
    4 Library    Remote    http://200.200.131.126:8080/RPC2    WITH NAME    a1
    5 Resource    a.robot
    6 Variables    ../robot_xml.py
    7 Library    b 

    3、变量表

    作用:

    创建变量

    变量的分类:

    注意:变量是不区分大小写的,同时,其中的下划线和空格也会被忽略。

    1. 标量变量:${SCALAR}。$:表示标量变量的标识符,{ }:一对花括号,SCALAR:变量名。
    2. 列表变量:@{LIST}。@:表示列表变量的标识符,{ }:一对花括号,LIST:变量名。
    3. 字典变量:&{USER}。&:表示字典变量的标识符,{ }:一对花括号,USER:变量名。
    1 *** Variables ***
    2 ${aa1}    2
    3 ${NAME}    Robot Framework
    4 @{NAMES2}    @{NAME}    Seppo
    5 &{MANY}     first=1     second=${2}    ${3}=third

    4、测试用例表

    作用:

    编写测试用例

    构成:

    1、测试用例名称:

    位于测试用例表格的第一列。一个用例始于测试用例名,直到遇到下一个用例名,或者到表格的结束。

    2、关键字名称:

    一般情况下位于第二列。不论关键字名称位于第几列,跟在其后的列包含的是要传递给该关键字的参数。

    3、测试用例配置项:

    每个测试用例都可以有自己的相关设置。设置项的名称使用方括号([])括起来,以区别于关键字。

    下面列出了可设置的配置项:

    测试用例文档([Documentation])

    为用例设置一段文档说明。这个说明会显示在命令行的输出中,以及后续的测试日志和测试报告中。

    测试用例标签([Tags])

    一个测试套件中的用例标签必须唯一。 

    测试用例前(后)置条件([Setup] / [Teardown])

    • 有两种设置方法:
    1. 在测试用例文件的设置表中设置Test Setup 和 Test Teardown。这种情况下,该文件中的所有测试用例都会使用该前(后)置条件。
    2. 对单个测试用例通过设置 [Setup]、[Teardown]设置前(后)置条件。
    • 注意事项:
    1. 在Robot Framework中,setup和teardown都是带参数的普通关键字而已,并且各自只能指定一个关键字。如果涉及到多个步骤,只能创造一个更高层的 user keywords。
    2. Setup在测试用例之前执行,Teardown在测试用例之后执行。Teardown在以下两个方面比较特殊:首先,它在测试用例执行失败的时候也会被执行,所以常常用来作为测试环境的清理工作。其次,teardown中所有的关键字都会被执行,哪怕其中有的执行失败。
    3. 如果用例单独设置了 [Setup] 或 [Teardown],则会覆盖文件中的 Test Setup 或 Test Teardown。进而可以为 [Setup] 或 [Teardown]设置空值(空格或 NONE),表示当前用例没有前(后)置条件,即使测试文件设置表中已有设置。

    测试用例模板([Template])

    • 有两种设置方法:
    1. 在测试用例文件的设置表中设置 Test Template。这种情况下,该文件中的所有测试用例都会应用该模板。
    2. 对单个测试用例通过设置 [Template] 指定一个模板。
    • 注意事项:
    1. 如果一个模板用例的内容有多行数据,该模板会逐行应用于这些数据。也就是说,该模板关键字会被调用多次,每次使用其中一行的数据作为参数。如果用例单独设置了 [Template],则会覆盖文件中的 Test Template。进而可以为 [Template] 设置空值(空格或 NONE),表示当前用例没有模板,即使测试文件设置表中已有设置。
    2. 模板测试用例在执行过程中,如果有某一轮次执行失败也不会影响下面轮次继续执行。
    3. 当模板中使用了嵌入式的参数,模板关键字中参数的个数必须和传入的参数个数一致,但是参数的名称不一定非要和原关键字保持一致。甚至还可以添加或减少参数。

    需要注意的是:

    在测试用例中使用的变量,必须声明。

     

    1 *** Testcases ***
    2 Test1
    3     [Documentation]    Demo2
    4     [Tags]    ooo
    5     [Setup]    ${aa1}
    6     [Teardown]    ${mn}
    7     [Timeout]    20
    8     Should Be Equal As Integers    ${aa1}    2
  • 相关阅读:
    Redis基础-基本数据类型
    C#特性
    C#反射
    Json序列化
    动态添加文本框并获取文本框的值
    iframe中镶嵌html页,并获取html页中的方法
    获取url中的参数
    发送邮件
    数据导入Excel表格
    处理xml模块、configparser模块、hashlib模块、subprocess模块
  • 原文地址:https://www.cnblogs.com/sunshine-blog/p/10077732.html
Copyright © 2011-2022 走看看