robotframework自动化系列:新增流程
刚接手项目的时候,要求所有流程在上线之前必须确保正向操作是正确的;这个时候又有新的模块需要测试,所以引入自动化测试是非常有必要的!通过对比,尝试使用RF进行自动化的回归测试。
测试中最常见的操作就是增删改查,所以对于自动化最简单的就是数据模块的增删改查人手进行操作。
这里先看一下web测试中的新增用例的测试点,如图所示
对于一个新增操作,我们这里以账号新增为例进行操作展示,账号新增页面元素显示如图所示
先说明一下,各个元素的定位方法:
输入用户名
[Arguments] ${username}
Wait Until Element Is Visible id=username
clear element text id=username
input text id=username ${username} #账号管理中的用户名和密码共用
输入密码
[Arguments] ${password}
Wait Until Element Is Visible id=password
input text id=password ${password} #账号管理中的用户名和密码共用
再次输入密码
input text id = ppassword ${ppassword}
手机号码
[Arguments] ${phone}
clear element text id = phone
sleep 5
input text id = phone ${phone} #用户信息共用此定位,账号信息中也共用
邮箱
[Arguments] ${email}
clear element text id=email
input text id=email ${email}
选择用户组
click element xpath = .//*[@id='unTbl']/tbody/tr[1]/td[1]/i
用户所属机构
[Arguments] ${organization_id}
Comment select from list id = organization_id 机构养老一 #账号中的所属机构共用此定位
#随机选择所属机构
${count} get matching xpath count .//*[@id='organization_id']/option
${sale_pattern_temp} evaluate random.randint(0,${count}-1) random
${sale_pattern} Convert To String ${sale_pattern_temp}
select from list by index organization_id ${sale_pattern}
数据权限
#账号新增中的全选按钮
click element xpath = .//*[@id='orgs']/li/input
账号保存
click button xpath = html/body/div[1]/div/div[2]/form/div[10]/div/button[1]
Comment click button xpath = html/body/div[1]/div/div[2]/form/div[10]/div/button[1]
sleep 10
账号名称检查
${account} get text xpath=.//*[@id='tb_guardian']/tbody/tr[1]/td[2]
[Return] ${account}
而新增账号页面中元素的定位已经确定,接下来就是用例步骤:
用例目的:新建账号-成功
步骤:
- 使用管理账号登录系统
- 打开新建账号的页面,此处需要使用select window来切换tab到新建账号的页面
- 输入符合的用户名、密码、确认密码、手机号码、邮箱、选择用户组、用户所属机构和全部数据权限
- 点击保存
断言:
- 当前页面的url是否是query的页面
- 当前显示的首行账号名称是否和新增的账号名称一致
接下来就是使用RF进行用例的编写(≧▽≦)/
根据用例步骤一步步来编写用例,这里将登录和关闭浏览器2个操作封装之后,分别在setup和teardown中进行设置了,如图所示
账号添加用例代码展示如图
[Documentation] 用例目的:新建账号-成功
... 步骤:
... 1.打开新建账号的页面,此处需要使用select window来切换tab到新建账号的页面
... 2.输入符合的用户名、密码、确认密码、手机号码、邮箱、选择用户组、用户所属机构和全部数据权限
... 3.点击保存
... 断言
... 1.当前页面的url是否是query的页面
... 2.当前显示的首行账号名称是否和新增的账号名称一致
[Setup] login
打开页面 ${GuardianEdit}
Take Screenshot guardian
账号跳转
Take Screenshot guardian
${username}= gen chars 10
输入用户名 ${username}
输入密码 123456
再次输入密码 123456
${phone} Evaluate random.choice(['139','188','185','136','158','151'])+"".join(random.choice("0123456789") for i in range(8)) random
手机号码 ${phone}
邮箱 5645645645656@qq.com
选择用户组
用户所属机构 机构养老一
数据权限
Take Screenshot guardian
账号保存
sleep 10
#确认显示信息
角色确认
sleep 10
Take Screenshot guardian
Comment ${mes}= Confirm Action
Comment sleep 10
Comment Should Be Equal As Strings ${mes} 保存成功!
Comment 确认保存
Comment ${Auser} get text xpath=.//*[@id='tb_guardian']/tbody/tr[1]/td[2] #后期po
#断言当前页面的url
Location Should Be ${GuardianQuery}
${Auser} 账号名称检查
Should Match ${Auser} ${username}
log ${username}
log ${Auser}
[Teardown] close
代码截图如图所示
这样新增账号成功用例已经完成。而根据web测试点,其他用例设计如图所示
这里整个结构使用了RobotFramework的分层思想:
第一层即用例层,如上图所示
第二层是页面元素封装,如图所示
第三层是元素值的变量集合,如图所示
到此,账号新增模块的整个用例设计已经完成(o)/~
robotframework自动化系列:新增流程的更多相关文章
- robotframework自动化系列:随机下拉框
robotframework自动化系列:随机下拉框 随着项目自动化不断推进,在下拉框定位的时候出现些问题,每次下拉框选择都是相同的下拉选项,如果想每次选择的选项不一样,该如何实现呢,查找了很多资料,没 ...
- robotframework自动化系列:修改流程
在上一小节中,新增流程操作已经完成.那么接下来就是修改的流程操作了,对于一个页面的修改如何操作呢? 针对修改修改操作是在一个已经存在的账号直接修改还是新添加一个账号再修改呢?从用例设计健壮性出发,我们 ...
- robotframework自动化系列:删除操作流程以及总结
之前已经完成了登录.新增和修改的操作流程,这一节主要说明删除操作流程以及自动化的过程中出现的问题,算是对这个项目自动化的一个总结. 删除操作流程 对于系统账号管理中删除功能,删除的测试点主要如图所示 ...
- robotframework自动化系列:文本类型的下拉框
对于下拉框定位和输入,这里主要遇到有两种类型的下拉选择. 其中一个类型是select-options格式,如图 这种方式的定位可以使用select from list by value或select ...
- robotframework自动化系列:操作mysql数据库
随着项目自动化深入和不断完善,大部分功能都已经能完成了自动化的操作:但是在设备添加的时候,遇到了难题.添加设备的时候mac必须是服务器设备管理中已经存在的mac地址,且是没有关联或绑定用户的设备信息. ...
- robotframework自动化系列:登陆操作
robotframework自动化系统:登录 robotframework对于编程能力比较弱的测试人员而言,真的是雪中送炭!我们可以使用robotframework根据之前完成的测试用例,一步步完善自 ...
- RobotFrameWork自动化系列:安装配置
1. RobotFrameWork安装配置 1.1. 安装环境 64位win10家庭中文版 网上很多这方面的教程,但是比较零散,这里是自己安装配置的一个简单的笔记. 1.2. 安装说明 由于Rob ...
- Robotframework自动化系列:筛选结果数量统计
Robotframework自动化系统:筛选结果数量统计 上一个节点已经可以随机选中某一个下拉框的值,我们在使用evaluate随机数的时候需要计算下拉选项总数,这时候我们是手工计算输入的:这时候如果 ...
- 从零学习基于Python的RobotFramework自动化
从零学习基于Python的RobotFramework自动化 一. Python基础 1) 版本差异 版本 编码 语法 其他 2.X ASCII try: raise Type ...
随机推荐
- php中常用的字符串截取函数mb_substr实例解释
string mb_substr ( string $str , int $start [, int $length = NULL [, string $encoding = mb_internal_ ...
- (Java后端 Java web)面试时如何展示自己非技术方面的能力(其实就是综合能力)
这篇文章的适用范围其实不仅限于Java后端或Java Web,不过其中有些是拿这方面举例的,在其它方面,大家可以举一反三,应该也能得到些启示. 我们在面试时,会发现有些候选人技术不错,比如在Java ...
- MMORPG战斗系统随笔(三)、AI系统简介
在设计一款游戏的时候,如果我们是玩家,是希望自己能够操作角色畅玩游戏的.在一款MMORPG游戏中,大部分的实际游戏角色,是需要玩家来操作的,通过在游戏大世界相互完成游戏中的任务等等来体验游戏.在大世界 ...
- Hibernate Mapping Exception:-9
if("true".equals(map.get("isAudited"))){ isAudited="=";//已审核 }else{ is ...
- python修改注册表
与注册表操作相关的函数可以分为打开注册表.关闭注册表.读取项值.c添加项值.添加项,以及删除项等几类. 表1 Windows注册表基本项 项名 描述 HKEY_CLASSES_ROOT 是HKEY ...
- Window2008 R2(64位)使用codesmith连接Sqlite
①打开C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config目录,找到machine.config文件新增 <add name=" ...
- c#中list使用示例
protected void Page_Load(object sender, EventArgs e) { List<string> studentNames = new List< ...
- WPF---Effect效果
在 WPF 中,可以使用 BitmapEffect 对象为每一个 Visual 对象生成各种各样的效果,一个 Visual 对象可以设置一种或多种 BitmapEffect 效果,WPF 内置了几种效 ...
- svn解除控制
转自 :http://guoyong123.blog.163.com/blog/static/162543782010428102928353/ 一直在研究svn,今天让我们组将文件加入到服务器上,但 ...
- JAVA提高六:泛型
在面向对象编程语言中,多态算是一种泛化机制.例如,你可以将方法的参数类型设置为基类,那么该方法就可以接受从这个基类中导出的任何类作为参数,这样的方法将会更具有通用性.此外,如果将方法参数声明为接口,将 ...