主题:记录一个迭代中,UI自动化的应用过程,让我们从简单,重复的工作中解放出来吧
一 迭代时间线(以测试视角观看)
二、需求概述
课程考勤:新增规则;
老师考勤:.为啥空着呢?是否有必要写呢,是个可以讨论的话题(无该需求用例)
职工管理:新增职工;修改职工;禁用启用;列表查询;重置密码;导入导出;
三、UI自动化测试脚本设计编写过程
新增职工界面脚本设计:
在【页面元素区】新建一个【xxxV1.8.10考勤优化二期】文件夹
然后在【xxxV1.8.10考勤优化二期】文件夹下新建一个资源文件【新增职工页面】
设计思路:提供一个方法给测试用例调用,调用该方法,用户传入用户名,性别,手机号,邮箱字段,用例就自动执行输入姓名,选择性别,输入手机号,输入邮箱,点击确认,然后断言。
开始编写:首先我们在资源文件【新增职工页面】下,新建变量用来存储定位信息:【这里也应该有个思考,我是不是可以用外部文件来存储变量呢,岂不是更好??比如yaml文件,或者py中配置,这个py文件是不是可以发生更多的故事,比如用来切换不同环境变量】
Scarla变量,${单个添加} ,用来存储进入到新建职工页面的入口按钮元素定位信息
Scarla变量,${姓名} ,用来存储姓名输入框的定位信息
Scarla变量,${手机号},用来存储手机号输入框的定位信息
Scarla变量,${邮箱},用来存储邮箱输入框的定位信息
Scarla变量,${确认},用来存储确认按钮的定位信息
字典变量 ,&{sex_dict} ,用来存储性别信息,也就是男女的定位元素信息
元素信息定义好之后,要设计方法:
新建第一个方法:输入姓名,主要功能就是接收用户的输入并输入到姓名输入框中
新建第二个方法:选择性别,根据用户输入来选择
新建第三个方法:输入手机号
新建第四个方法:输入邮箱
新建第五个方法:添加员工 ,这个方法就是提供给测试用例调用的,同时这个方法还调用了业务公共方法,进入到某个页面方法
那方法设计好后,就应该设计测试用例了,测试用例主要就是传入参数的设计了
在测试用例区新建一个文件夹【xxxV1.8.10考勤二期优化】,然后新建一个测试套件【添加职工】,在测试套件下新建一个测试用例【add_001】
第一个用例如图,我们Documentation中是对我们测试用例的描述,在测试报告中会格外有用,所以大家一定要记得写
首先我们要点击测试套件【添加职工】导入我们写好的方法,就跟python中引用包是一样的方法
引入后,我们就可以在测试用例中使用方法【添加职工】,我们第一个参数传入的是姓名,对应的我们测试的功能测试用例-测试10个汉字是否可以添加,其他参数正常输入
其中${EMPTY}代表输入空值,也就是不输入内容
我们可以发现,方法中我们是没有断言的,测试用例的最后一行我们要使用断言来进行操作结果的断言
下面我再放几个测试用例来:
add_002
add_003
add_010
这个用例我们着重要说下,他是用来测试输入错误格式手机号,前端是否做了正确处理的
由于我们的用例后期要经常的执行,虽然名字产品上允许重复,但是邮箱不可以重复,所以我们就要对其进行参数化,以此来保障我们测试用例的健壮性,可以重复且稳定的执行
所以我们用FakerLibrary来进行参数化姓名与邮箱
最后加上对应断言,手机号格式错误
其他的测试用例都要根据我们的经验去进行设计:如其他用例虽然没有贴上来,但是可以预见,他们肯定是有的是测试输入10位手机号,测试姓名纯英文,测试性别选择,测试邮箱输入各种错误格式等....
----------画个横线,标识下,我们已经完成新增职工的UI自动化测试脚本与用例的设计---------
编辑职工界面脚本设计:
可以发现,与新增界面一致,不一样的是界面会带入用户的信息显示,下面我们看如何设计编辑页面的方法
同样,首先我们要新建变量存储我们要操作的元素的定位信息
然后设计编辑用户的各种方法如图:
修改姓名,我们要判断用户传过来的内容是不是空值,如果是空值,意思就是我们不做修改,如果不是空值,我们要注意加上clear=Text这个参数,要先清理掉旧的内容,再输入新的内容
修改性别,我们要先判断下【男】是不是被选中了,如果被选中了,我们就选择女,如果没被选中就选择男,由于这里不是采用radio类型来进行的,所以我们就根据class的变化来判断
这里我们写了一个方法,叫【获取列表数据】,写这个方法就是为了测试编辑页面显示的内容是否准确,这个方法我们用Get Text方法获取列表上对应元素的值
方法【提交修改】就是对外给测试用例用来调用的方法
上述为方法的设计过程,方法设计编写完成后,就需要在测试用例中调用
我们从下图观察:
第一个用例,我们是测试列表的数据与编辑页面的数据是否展示一致,我们首先参数化添加一个员工,然后进入该员工的修改页面,接下来就是比对列表的数据与编辑页面的数据是否一致,我们用BuiltIn库里的Should Be Equal来进行比较
edit_002 : 修改姓名,其他不变
edit_003:修改手机号,其他不变
edit_004:修改邮箱,其他不变
------------------画个横线,用来标识我们设计好了编写职工的脚本设计与用例设计---------------------
其实还有2个功能需要写自动化,后面再整理上来~~