目录

    主要介绍 Robot Framework 的一些基本概念,如何写一个测试用例。

    1. 基础元素

    1.1 关键字 - keywords

    Robot Framework 关键字类似函数。分为系统关键字和用户自定义关键字。

    • 系统关键字,通过加载 Library 引入
    • 用户关键字,通过加载 Resource 引入

    1.2 库 - Library

    库用来封装和复用关键字。Robot Framework 库包括系统库和用户自定义库。

    • 系统库,如 XML、String 等
    • 用户自定义库。单独安装的一些第三方库,如 seleniumlibrary 等。也可以是自己写的一些 Python 文件,比如 send_mail.py 等。

    1.3 测试用例 - Test Case

    按顺序组合的一些关键字与测试数据的集合,用于测试某个场景。若干个测试用例,构成一个测试套件。

    1.4 资源 - Resource

    资源文件的整体结构和测试用例文件一样, 只不过其中不能包含测试用例。

    1.5 测试套件 - Test Suite

    一个测试套件就是一个 txt 文件,里面包含多个测试用例,包括四个部分的内容。

    • Setting
    • Variable
    • Test Case
    • Keyword

    1.6 变量 - Variable

    变量有三种类型:

    • 标量 scalars,引用方式:${SCALAR}
    • 列表 lists,引用方式,@{LIST}
    • 字典 dictionaries,引用方式:&{DICT}

    此外,环境变量可以直接使用 %{ENV_VAR} 引用

    1.7 数据类型

    • 字符串:${variable},${test}
    • 数值型:${80},${1.2}
    • 布尔值:${true},${false}
    • Null/None值:${None},${null}
    • 空格、Empty:${SPACE},${EMPTY}

    2. 目录结构

    可以先在本地建立,下面结构的目录,然后使用 RIDE 打开项目文件即可:

    ProjectName
    |---cases
    |------ 测试套件
    |--------- 测试用例
    |---keywords (存放关键字)
    |------common.txt (通用关键字)
    |---res(附件资源文件夹,放图片、表格、文件等)
    |---global.txt(存放一些必须的全局变量)
    |---locators (存放页面上一些固定的元素,进行统一管理)
    |---lib (自己写的一些库 Python 库文件)
    

    如果需要维护的变量、用例少,那么直接使用一个文本即可。

    如果需要维护大量变量、用户时,再将文件拆分为文件夹,在文件夹中创建各个模块的文件,进行维护。

    3. 开始写一个测试

    3.1 一个测试用例的结构

    • 一些初始化操作
    • 对需要测试的页面进行一些测试操作
    • 校验页面的表现是否符合预期

    3.2 一个简单的测试用例

    global.txt

    *** Variables ***
    ${site_url}       http://xxxxx.com/    # 首页地址
    ${username}       myname    # 用户名
    ${password}       password    # 密码
    

    为了方便维护,将全局变量,定义在单独的一个文件里面。

    case/login.txt

    *** Settings ***
    Resource          ../global.txt
    
    *** Test Cases ***
    登录
        Open Browser    ${site_url}    gc
        Maximize Browser Window
        Wait Until Page Contains Element    id=user
        Wait Until Element Is Visible    id=user
        Input Text    id=user    ${username}
        Sleep    1
        Wait Until Page Contains Element    id=password
        Wait Until Element Is Visible    id=password
        Input Text    id=password    ${password}
        Sleep    1
        Wait Until Page Contains Element    jquery=.login-btn
        Wait Until Element Is Visible    jquery=.login-btn
        Click Element    jquery=.login-btn
        Sleep    1
    

    这是一个简单的测试用例,实现的功能是打开一个登陆链接,然后输入用户名和账户密码,最后登陆跳转。

    实际上,Robot Framework 支持 HTML、TSV、TXT、reST 等多种描述格式。不同的格式文件,Robot Framework 使用的解析器不同。

    以 TXT 为例。

    第一列表示的是测试用例名,意思是这个测试用例命名为 登陆

    第二列,有两种情况,关键字或变量。上面提到,关键字是 Robot Framework 中的一等公民,可以理解为函数。函数分为有返回值和没有返回值的。如果使用的是有返回值的关键字,那么从第二列开始的若干列都可能被用于接受返回值,一直到遇到关键字为止。如果关键字没有返回值,则第二列就是需要使用的关键字。比如,这里的 Open BrowserMaximize Browser Window 都是关键字。

    关键字的后续列会作为参数传递给关键字。比如,这里的 id=password${password} 等。

    3.3 如何使用关键字

    看完上面的例子,你可能已经意思到,Robot Framework 里面关键字的重要性了。大量的操作都需要使用到关键字,同时,也需要封装自己的关键字。

    在 RIDE 中按 F5 可以看到内建和库的关键字,使用帮助文档。

    在 Web 自动化测试中,最常用的是 selenium2library 库中的关键字。

    4. 参考