Robot Framework之测试用例分层实战
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之测试用例分层实战的更多相关文章
- Robot Framework - 1 - 测试用例与测试库
01- 关于测试库(Test libraries) Test libraries provide the actual testing capabilities to Robot Framework ...
- Robot framework之元素定位实战
1.1 id 和name 定位 Web页面都是由许多标签和元素组成的,每个标签或元素都是很多属性,好比一个人 id 和name 可以看作一个人的身份证号和姓名.下面看下教育局招生系统的用户名输入 ...
- 执行robot framework 的测试用例 命令行pybot使用方式
1.执行整个项目下的所有用例: pybot 项目路径.例如: pybot D:\robot 2.执行某个suit中的所有用例: pybot 项目路径\suit文件名称. 例如:pybot D:\rob ...
- Robot Framework: 自定义自己的python库
利用Robot Framework编写测试用例,往往需要开发自己的关键字,有的关键字需要通过自己编写python代码来实现.这在rf中,就需要自己定义python库.这个过程其实不复杂,本文来介绍下. ...
- 【转】Robot Framework 快速入门
目录 介绍 概述 安装 运行demo 介绍样例应用程序 测试用例 第一个测试用例 高级别测试用例 数据驱动测试用例 关键词keywords 内置关键词 库关键词 用户定义关键词 变量 定义变量 使用变 ...
- Robot Framework 快速入门
Robot Framework 快速入门 目录 介绍 概述 安装 运行demo 介绍样例应用程序 测试用例 第一个测试用例 高级别测试用例 数据驱动测试用例 关键词keywords 内置关键词 库关键 ...
- Robot Framework 快速入门_中文版
目录 介绍 概述 安装 运行demo 介绍样例应用程序 测试用例 第一个测试用例 高级别测试用例 数据驱动测试用例 关键词keywords 内置关键词 库关键词 用户定义关键词 变量 定义变量 使用变 ...
- Robot Framework自动化测试(四)--- 分层思想
谈到Robot Framework 分层的思想,就不得不提“关键字驱动”. 关键字驱动: 通过调用的关键字不同,从而引起测试结果的不同. 在上一节的selenium API 中所介绍的方法其实就是关 ...
- 【Robot Framework 项目实战 02】SeleniumLibrary Web UI 自动化
前言 SeleniumLibrary 是针对 Robot Framework 开发的 Selenium 库.它也 Robot Framework 下面最流程的库之一.主要用于编写 Web UI 自动化 ...
随机推荐
- 网易内推(Android) 拿offer
学校BBS上师兄发网易内推,凑下热闹投了一发 一面:电话面 大概25分钟,感觉面试官气场很足,主要关注了其中一个 个人开源项目 1.自我介绍 2.说说你做的这个项目 当时谈到使用到了开源框架xtuil ...
- Mahout系列之----kmeans 聚类
Kmeans是最经典的聚类算法之一,它的优美简单.快速高效被广泛使用. Kmeans算法描述 输入:簇的数目k:包含n个对象的数据集D. 输出:k个簇的集合. 方法: 从D中任意选择k个对象作为初始簇 ...
- Android虚拟机 USB转串口调试方法
有时候需要在虚拟机调试串口,首先安装串口的驱动程序(不知道的话可以用驱动精灵),然后打开设备管理器找到驱动,查看驱动使用的端口(比如COM3),虚拟机需要在命令行启动: 将SDK下的tools文件夹加 ...
- Java深拷贝浅拷贝
首先,Java中常用的拷贝操作有三个,operator = .拷贝构造函数 和 clone()方法.由于Java不支持运算符重载,我们无法在自己的自定义类型中定义operator=.拷贝构造函数大家应 ...
- UML之概述
UML,英文名曰:Unified Modeling Language,她还有个中文名字叫统一建模语言,简单的来说,她就是一种绘制软件蓝图的标准语言.她的表达能力特别强,可以描述开 ...
- html5标签基础
1.声明:<!DOCTYPE> HTML有多个不同的版本,只有完全明白页面中使用的确切HTML版本,浏览器才能完全正确的显示出HTML页面,这就是<!DOCTYPE>的用处. ...
- 【编程练习】快速select算法的实现
代码来自: http://blog.csdn.net/v_JULY_v 算法思想: // Quick_select.cpp : 定义控制台应用程序的入口点. // #include "std ...
- objc写一个NSMutableArray不连续索引替换对象的方法
NSMutableArray内置的方法-(void)replaceObjectsAtIndexes:(NSIndexSet*)set withObjects:(NSArray*)objs 只能替换一段 ...
- LeetCode(30)-Pascal's Triangle
题目: Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5, ...
- ruby中__FILE__,$FILENAME,$PROGRAM_NAME,$0等类似变量的含义
ruby中有4个类似的变量(常量),他们分别是: __FILE__,$FILENAME,$PROGRAM_NAME,$0 他们分别在代码中表示神马呢?我们用实际的例子说明一下: x.rb #!/usr ...