数据驱动
RIDE提供的库:
自定义库:DataCenter.py
一、数据驱动测试注重于测试软件的功能性需求,也即数据驱动测试执行程序所有功能需求的输入条件。实现KISS。
二、ExcelLibrary方式
还是以登录测试为例讨论ExcelLibrary方式。
安装:pip install robotframework-excellibrary
数据文件:%{G_DATACENTER}login_info.xls
- 数据目录
- 数据源
Excel问题:对长度过长的数字以科学计数的格式处理,结果改变了密码值。
解决方案:
- 在单元格数字前加上英文单引号’:例如,’123456787901234567890
- 先改单元格格式为文本,再输入数字:右击单元格,设置单元格格式,选择“文本”
- 修改单元格自定义格式: 右击单元格,设置单元格格式,选择“自定义”,类型改”G/通用格式”
用例:
- 打开Excel文件:Open Excel
- 获取每一列内容:Get Column Values
- 登录网站:GUI_Login
- 断言:用户名与密码是否正确
读取Excel的缺点和问题:
- 缺点:其存储方式是读取的每一项内容都会加上列名,对于数据的处理不是特别优雅。
源代码:C:Python27Libsite-packagesExcelLibraryExcelLibrary.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)。