1.1  测试用例的第一层(交互层)

1. 创建项目资源(Resource)。

操作步骤:

点”项目名称”->右键,选New Resource,在弹窗Name 输入框输入资源名称 mykeywork->新建项目资源。

2.给新建的项目资源导入Selenium2Library库。

3.创建自定义关键字(New User Keyword)。

操作步骤:

点”项目资源”->右键,选New User Keyword,在弹窗Name 输入框输入资源名称 打开浏览器->新建用户关键字。

4.给新建的用户关键字(打开浏览器),添加操作步骤。

5.新建用户自定义关键字(最大化浏览器)。

6. 新建用户自定义关键字(输入用户名)。

7. 新建用户自定义关键字(输入密码)。

8. 新建用户自定义关键字(点击登录)。

这样我们就把实现教育局招生系统的登录系统拆分成5个自定义的关键字。接着我们新建一个测试用例,通过自定义的关键写教育局招生系统的登录步骤。

9.新建一个登录的New Suite->新建一个login用例->把自定义关键字资源(mykeywork)导入进来。

10.用用户自定义关键字的关键字写登录步骤。

11.运行用用户自定义关键字的关键字写的测试用例,查看测试结果。

有的时候,打开浏览器或者登录的用户名可以不一样,那么就需要我们去改程序,为了更加灵活,我们可以在新建自定义关键字(New User Keyword)的时候,把经常需要改变的值进行参数化。

调整一:

调整二:

调整三:

经过参数化之后,测试用例也是需要做相应的调整,如下:

上面整体的例子说明:我们不但要把操作步骤拆分离,而且还要做到数据和代码分离。

1.2  测试用例的第二层封装(页面层)

封装的过程步骤如下:

1. 点”项目名称”->右键,选New Resource,在弹窗Name 输入框输入资源名称 page.txt->新建项目资源。

2.给新建的项目资源导入Selenium2Library库。

3.把交互层的关键字(mykeywork)资源导入到page层中

4.创建page层关键字(点page.txt资源->右键->新建自定义关键字New User Keyword(登录页面))。

5.对登录页面关键字的数据进行参数化。

这样我们就把page层登录页面关键字封装好了。

补充说明:整个项目的page层有很多页面关键字,这里只是举例了登录一个关键字,其实每层都可以根据需要封装不同的关键字的。

1.3  测试用例的第三层封装(流程层)

封装的过程步骤如下:

1. 点”项目名称”->右键,选New Resource,在弹窗Name 输入框输入资源名称 flow.txt->新建项目资源。

2.给新建的项目资源导入Selenium2Library库。

3.把交互层的关键字(mykeywork)资源导入到流程层中

4.把页面层的关键字(page)资源导入到流程层中。

5.建流程层关键字(点flow.txt资源->右键->新建自定义关键字New User Keyword(登录流程))。

6.流程层关键字步骤封装

7.流程层关键字数据参数化

到这里,3层的关键字基本已经封装好了,我们就可以写测试用例了。

1.4  测试用例的编写

过程步骤如下:

1.新建一个New Suite(测试套件)登录

2. 给登录(测试套件)导入Selenium2Library库

3. 把交互层的关键字(mykeywork)资源导入到登录(测试套件)中

4.把流程层的关键字(flow)资源导入到登录(测试套件)中。

5.新建测试用例(新建一个登录的New Suite->新建一个login用例)。

6.登录测试用例的实现。

代码实现:

运行结果:

7.测试用例的验证。

项目例子一:(登录成功的验证)

步骤:

1)在交互层的mykeywork.txt资源中添加一个用户自定义关键字(检查登录成功)

2)修改之前的测试用例,简化用例。

项目例子二:(登录失败的验证)

步骤:

1)在交互层的mykeywork.txt资源中添加一个用户自定义关键字(检查失败成功)

2)新建一个新的login2

7. project(项目)、Suite(模块)、Test case(测试用例)的Settings项设置。

project(项目)Suite模块(测试套件)、 Test case(测试用例)都有一个Settings项,下面对Settings项的各个字段说明:

【Suite Setup】设置测试套件下所有的测试用例Setup项,假如在这里设置了关键字,也就是每个测试用例开始的时候都调用这个关键字。

项目例子:每个用例的开始,默认打开浏览器。

【Suite Teardown】设置测试套件下所有的测试用例Teardown项,假如在这里设置了关键字,也就是每个测试用例结束的时候都调用这个关键字。

项目例子:有些用例可能没有执行到最后,就失败了,导致浏览器没关闭,这样我们就可以在这里加一个关键字,假如用例执行失败,关闭浏览器。

步骤:

1)在交互层的mykeywork.txt资源中添加一个用户自定义关键字(测试失败时候调用)

2)设置测试套件下所有的测试用例Teardown项

【Test Setup】设置单个的测试用例Setup项。

【Test Teardown】设置单个的测试用例Teardown项。

【Test Template】设置单个的测试用例模板,这个用的比较少。

【Test Timeout】设置单个的测试用例超时时间,每个步骤都超时设置的时间。

【Force Tags】

【Default Tags】

1.5  继续封装测试用例关键字

项目例子一:登录时候不需要关注是登录成功还得失败,那就需要再封装关键字

步骤:

1.在page层创建一个新的关键字(登录检查)

2.编写登录检查关键字

3.创建一个新的用例login3。

代码实现:

运行结果:

备注:失败的例子,就把Pass 改成Fail 就可以了。

Robot Framework之测试用例分层实战的更多相关文章

  1. Robot Framework - 1 - 测试用例与测试库

    01- 关于测试库(Test libraries) Test libraries provide the actual testing capabilities to Robot Framework ...

  2. Robot framework之元素定位实战

    1.1  id 和name 定位 Web页面都是由许多标签和元素组成的,每个标签或元素都是很多属性,好比一个人   id 和name 可以看作一个人的身份证号和姓名.下面看下教育局招生系统的用户名输入 ...

  3. 执行robot framework 的测试用例 命令行pybot使用方式

    1.执行整个项目下的所有用例: pybot 项目路径.例如: pybot D:\robot 2.执行某个suit中的所有用例: pybot 项目路径\suit文件名称. 例如:pybot D:\rob ...

  4. Robot Framework: 自定义自己的python库

    利用Robot Framework编写测试用例,往往需要开发自己的关键字,有的关键字需要通过自己编写python代码来实现.这在rf中,就需要自己定义python库.这个过程其实不复杂,本文来介绍下. ...

  5. 【转】Robot Framework 快速入门

    目录 介绍 概述 安装 运行demo 介绍样例应用程序 测试用例 第一个测试用例 高级别测试用例 数据驱动测试用例 关键词keywords 内置关键词 库关键词 用户定义关键词 变量 定义变量 使用变 ...

  6. Robot Framework 快速入门

    Robot Framework 快速入门 目录 介绍 概述 安装 运行demo 介绍样例应用程序 测试用例 第一个测试用例 高级别测试用例 数据驱动测试用例 关键词keywords 内置关键词 库关键 ...

  7. Robot Framework 快速入门_中文版

    目录 介绍 概述 安装 运行demo 介绍样例应用程序 测试用例 第一个测试用例 高级别测试用例 数据驱动测试用例 关键词keywords 内置关键词 库关键词 用户定义关键词 变量 定义变量 使用变 ...

  8. Robot Framework自动化测试(四)--- 分层思想

    谈到Robot  Framework 分层的思想,就不得不提“关键字驱动”. 关键字驱动: 通过调用的关键字不同,从而引起测试结果的不同. 在上一节的selenium API 中所介绍的方法其实就是关 ...

  9. 【Robot Framework 项目实战 02】SeleniumLibrary Web UI 自动化

    前言 SeleniumLibrary 是针对 Robot Framework 开发的 Selenium 库.它也 Robot Framework 下面最流程的库之一.主要用于编写 Web UI 自动化 ...

随机推荐

  1. 网易内推(Android) 拿offer

    学校BBS上师兄发网易内推,凑下热闹投了一发 一面:电话面 大概25分钟,感觉面试官气场很足,主要关注了其中一个 个人开源项目 1.自我介绍 2.说说你做的这个项目 当时谈到使用到了开源框架xtuil ...

  2. Mahout系列之----kmeans 聚类

    Kmeans是最经典的聚类算法之一,它的优美简单.快速高效被广泛使用. Kmeans算法描述 输入:簇的数目k:包含n个对象的数据集D. 输出:k个簇的集合. 方法: 从D中任意选择k个对象作为初始簇 ...

  3. Android虚拟机 USB转串口调试方法

    有时候需要在虚拟机调试串口,首先安装串口的驱动程序(不知道的话可以用驱动精灵),然后打开设备管理器找到驱动,查看驱动使用的端口(比如COM3),虚拟机需要在命令行启动: 将SDK下的tools文件夹加 ...

  4. Java深拷贝浅拷贝

    首先,Java中常用的拷贝操作有三个,operator = .拷贝构造函数 和 clone()方法.由于Java不支持运算符重载,我们无法在自己的自定义类型中定义operator=.拷贝构造函数大家应 ...

  5. UML之概述

              UML,英文名曰:Unified  Modeling Language,她还有个中文名字叫统一建模语言,简单的来说,她就是一种绘制软件蓝图的标准语言.她的表达能力特别强,可以描述开 ...

  6. html5标签基础

    1.声明:<!DOCTYPE> HTML有多个不同的版本,只有完全明白页面中使用的确切HTML版本,浏览器才能完全正确的显示出HTML页面,这就是<!DOCTYPE>的用处. ...

  7. 【编程练习】快速select算法的实现

    代码来自: http://blog.csdn.net/v_JULY_v 算法思想: // Quick_select.cpp : 定义控制台应用程序的入口点. // #include "std ...

  8. objc写一个NSMutableArray不连续索引替换对象的方法

    NSMutableArray内置的方法-(void)replaceObjectsAtIndexes:(NSIndexSet*)set withObjects:(NSArray*)objs 只能替换一段 ...

  9. LeetCode(30)-Pascal's Triangle

    题目: Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5, ...

  10. ruby中__FILE__,$FILENAME,$PROGRAM_NAME,$0等类似变量的含义

    ruby中有4个类似的变量(常量),他们分别是: __FILE__,$FILENAME,$PROGRAM_NAME,$0 他们分别在代码中表示神马呢?我们用实际的例子说明一下: x.rb #!/usr ...