测试中最常见的操作就是增删改查,所以对于自动化最简单的就是数据模块的增删改查人手进行操作。
这里先看一下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^)/~