23
07

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表格,数据如下:

20180125_170433_880.png


 

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”。数据如下:


20180125_170449_019.png


(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完成一个基于数据库的测试。

 





为了答谢大家对蜗牛学院的支持,蜗牛学院将会定期对大家免费发放干货,敬请关注蜗牛学院的官方微信。


20181009_153045_341.jpg


版权所有,转载本站文章请注明出处:蜗牛学苑, https://www.woniuxy.cn/article/67