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 ...
随机推荐
- 插入排序的性能测试对比(C与C++实现)
一.概述: [标题]学生成绩管理的设计与实现 [开发语言]C.C++ [主要技术]结构体.STL [基本功能]实现对学生成绩类的基本操作:增加.删除.查询.排序 [测试数据]功能测试:按提示输入5组正 ...
- PE文件格式详解,第三讲,可选头文件格式,以及节表
PE文件格式详解,第三讲,可选头文件格式,以及节表 作者:IBinary出处:http://www.cnblogs.com/iBinary/版权所有,欢迎保留原文链接进行转载:) 一丶可选头结构以及作 ...
- java远程备份mysql数据库关键问题(限windows环境,亲测解决)
其它环境同理也可解决. 条件:为了使用mysql命令,本机要安装mysql ,我本机安装的是mysql 5.5. 错误1:使用命令 mysqldump -h192.168.1.50 -u root - ...
- java web jsp学习笔记--概述-常用语法,指令,动作元素,隐式对象,域对象
JSP学习笔记 1.什么是jsp JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术.JSP/Servlet规范.JS ...
- 我修改的时钟flash
<object type="application/x-shockwave-flash" style="outline:none;" data=" ...
- JavaScript设计模式--桥梁模式--XHR连接队列
针对该模式的例子现在不是很理解,写下来慢慢熟悉. 们要构建一个队列,队列里存放了很多ajax请求,使用队列(queue)主要是因为要确保先加入的请求先被处理.任何时候,我们可以暂停请求.删除请求.重试 ...
- 根据Dockerfile创建docker dotnet coer 镜像
那我们先来看看Dockerfile文件内容,注意这个文件是没后缀名的. #依赖原始的镜像,因为我们是要创建dotnet coer镜像,所以我就用了官方给的镜像[microsoft/dotnet:lat ...
- vue.js实例对象+组件树
vue的实例对象 首先用js的new关键字实例化一个vue el: vue组件或对象装载在页面的位置,可通过id或class或标签名 template: 装载的内容.HTML代码/包含指令或者其他组件 ...
- uva1629,Cake Slicing,记忆化搜索
同上个题一样,代码相似度极高,或者说可以直接用一个模板吧 dp[i,j,p,q]表示一块长为j-i+1,宽为q-p+1,左上角在位置(i,j)上的蛋糕,dp[]表示当前状态下的最优值,然后对该块蛋糕枚 ...
- UVa11882,Biggest Number
搜索+剪枝 如此水的一个题,居然搞了一上午 出错在bfs与dfs时共用了一个vis数组,导致bfs完后返回dfs应该能访问到的点访问不到 自己想怎么剪枝,想了几个剪枝方法,又证明,又推翻,再想,再证明 ...