数据驱动(四)

数据驱动

RIDE提供的库:

  1. Create List
  2. Get File
  3. Import Variables
  4. Template
  5. ExcelLibrary

自定义库:DataCenter.py

  1. Read Data From Excel
  2. Read Excel File
  3. Read CSV File
  4. Read Column From Excel
  5. Get Sheet Values From Excel

一、数据驱动测试注重于测试软件的功能性需求,也即数据驱动测试执行程序所有功能需求的输入条件。实现KISS。

二、ExcelLibrary方式

还是以登录测试为例讨论ExcelLibrary方式。

这里写图片描述

安装:pip install robotframework-excellibrary

这里写图片描述

数据文件:%{G_DATACENTER}\login_info.xls

  • 数据目录

这里写图片描述

  • 数据源

Excel问题:对长度过长的数字以科学计数的格式处理,结果改变了密码值。

这里写图片描述

解决方案

  1. 在单元格数字前加上英文单引号’:例如,’123456787901234567890
  2. 先改单元格格式为文本,再输入数字:右击单元格,设置单元格格式,选择“文本”
  3. 修改单元格自定义格式: 右击单元格,设置单元格格式,选择“自定义”,类型改”G/通用格式”

这里写图片描述

用例:

  • 打开Excel文件:Open Excel
  • 获取每一列内容:Get Column Values
  • 登录网站:GUI_Login
  • 断言:用户名与密码是否正确

读取Excel的缺点和问题

  • 缺点:其存储方式是读取的每一项内容都会加上列名,对于数据的处理不是特别优雅。

这里写图片描述

源代码:C:\Python27\Lib\site-packages\ExcelLibrary\ExcelLibrary.py

这里写图片描述

  • 问题:python读取数字的时候,把所有的数字都变成了浮点数。用例因为数据错误而 FAIL。

这里写图片描述

  • 修改源代码,处理浮点数的问题

这里写图片描述

定义两个方法:

def _keep_integer_type_from excel(self, value): 
def _is_number(self, value):

功能实现:如果输入是数字而且是整数,去掉浮点数并存储为字符串类型。在输入用户名和密码时,如果是整型或者浮点型都会报错。

  • 问题:用方法 def _keep_integer_type_from excel(self, value) 转换数据时,因为过长的数字不再以科学计数的格式处理。python读取时,存储为unicode类型。所以,return str(int(value))报错,“not all arguments converted during string formatting”。

这里写图片描述

修改方法 def _keep_integer_type_from excel(self, value),让其不再转换unicode类型数据。当然,也可以把Excel数据全部以上面三个解决方案处理而无需增加python的两个方法(def _keep_integer_type_from excel(self, value) & def _is_number(self, value))。不过,这样一来也失去了程序的灵活性(flexibility)。

这里写图片描述

posted @ 2017-10-26 20:34  Yi个人  阅读(347)  评论(0编辑  收藏  举报