Robot Framework->实现数据驱动测试
本节实验主要为大家讲解利用ExcelLibrary扩展库完成基于Excel表格的数据驱动的测试脚本开发,并了解在RF框架中循环的基本使用。
实验简介
本节实验主要为大家讲解利用ExcelLibrary扩展库完成基于Excel表格的数据驱动的测试脚本开发,并了解在RF框架中循环的基本使用。
实验目的
(1) 掌握ExcelLibrary的常用关键字及用法。
(2) 能够熟练运用Excel扩展库操作Excel表格内容。
(3) 掌握RF的循环结构的使用。
实验流程
1. 安装ExcelLibrary
利用命令“pip install robotframework-excellibrary”进行安装,安装完成后,在Ride中导入库“ExcelLibrary”即可使用。
2. 准备Excel表格数据
为了熟悉对Excel表格的操作,我们先准备一个标准的Excel表格,数据如下:
3. 基本的表格操作:
Open Excel D:\\Other\\Students.xls @{listCol} Get Column Values Sheet1 0 Log Many @{listCol} @{listRow} Get Row Values Sheet1 0 Log Many @{listRow} ${value} Read Cell Data By Name Sheet1 C4 Log Many ${value} ${value2} Read Cell Data By Coordinates Sheet1 2 3 Log ${value2} ${rowCount} Get Row Count Sheet1 : FOR ${row} IN RANGE 1 ${rowCount} \ ${id} Read Cell Data By Coordinates Sheet1 1 ${row} \ log ${id} \ ${name} Read Cell Data By Coordinates Sheet1 2 ${row} \ log ${name} \ ${school} Read Cell Data By Coordinates Sheet1 6 ${row} \ log ${school} |
现在,我们来对上述代码进行解释说明:
(1) 首先,与Java数组一样,在Excel中的行和列也是从下标0开始的。
(2) 第1行关键字“Open Excel”:打开一个Excel文件。
(3) 第2行关键字“Get Column Values”,获取“Sheel1”表格中的第1列的所有值,并保存到列表变量“@{listCol}中。注意,由于此处获取到的是一串值,所以我们使用List列表型变量来保存,此变量与普通变量的区别在于使用“@”符号来声明而不是“$”符号。
(4) 第4行关键字“Get Row Values”与“Get Column Values”用法相似,读取第一行的内容。
(5) 第6行关键字“Read Cell Data By Name”可以通过单元格的名称直接读取到一个具体的单元格的内容。比如“C4”表示第C列第4行的数据,即第3列第4行数据,值为“张小玲”。
(6) 第8行关键字“Read Cell Data By Coordinates”则是按照行和列的坐标直接读取具体的一个单元格的值,下标从0开始。此外的“2,3”对应的即为第3列第4行的数据,值仍然为“张小玲”。
(7) 第10行则是通过关键字“Get Row Count”获取到当前表格的数据行数,并将该数量赋值给变量“${rowCount}”,便于后续进行循环。
(8) 第11行开始则是一个标准的FOR循环,变量“${row}”表示循环变量,“In Range”则是关键字,表示循环的开始结束条件。如果后面只指定一个参数,则表示循环次数从0开始到参数减1结束。如果后面跟两个参数,则表示循环从参数1开始直到参数2减1结束。如果有第三个参数,则第三个参数指定了循环变量的步进长度,默认为1(即i++的作用)。
4. 实现Agileone登录的数据驱动测试
我们已经基本掌握了利用RF的ExcelLibrary扩展库操作Excel表格数据的各种用法。那么将此用法结合Selenium2Library或Requests便可以完成基于界面或协议的数据驱动测试。此处我们直接使用Requests库来为大家演示利用数据驱动完成对Agileone的登录功能的测试:
(1) 创建Excel文件,并且将表格名从“Sheet1”重命名为“Login”,数据添加完成后保存在“D:\Other\Agileone.xls”。数据如下:
(2) 实现RF测试脚本:
Create Session agileone http://localhost/agileone ${headers} Create Dictionary Content-Type=application/x-www-form-urlencoded Open Excel D:\\Other\\Agileone.xls ${rowCount} Get Row Count Login :FOR ${row} IN RANGE 1 ${rowCount} \ ${username} Read Cell Data By Coordinates Login 0 ${row} \ ${password} Read Cell Data By Coordinates Login 1 ${row} \ ${message} Read Cell Data By Coordinates Login 2 ${row} \ ${loginData} Create Dictionary username=${username} password=${password} savelogin=true \ ${respLogin} Post Request agileone /index.php/common/login data=${loginData} headers=${headers} \ Should Contain ${respLogin.content} ${message} |
思考练习
(1) 请利用ExcelLibaray扩展库完成Agileone其它功能模块的数据驱动测试。
(2) 请自学使用DatabaseLibrary完成一个基于数据库的测试。