在自动化测试中,把测试数据从测试代码中分离出来,可以大大降低维护的成本。例如:使用代码与测试数据分离,当测试数据发生变化时,只需要修改数据即可,不会对主干代码产生影响。可以把测试数据存储在文本或数据库中,本文计划用excel文件存储测试数据。
测试数据分离前:页面的登录操作中的用户名、密码等数据写在测试代码中。如下:
login_page.set_username(‘s1’) # 输入用户名
login_page.set_password('1')
**测试数据分离后:**页面登录操作红的用户名、密码等数据记录在excel文本中,如下:
具体操作:
前提:首先使用pip命令安装xlrd依赖,然后improt导入,接下来我们就可以使用它来编写自己的数据驱动工具类了。
1.创建excel文件
创建data文件夹,并在文件夹下创建excel文件,用来存储数据。
excel文件中添加测试数据:
2.完善public_functions函数:读写excel文件
# 读取csv文件中每一行的数据并保存为一个列表返回(列表中每一个元素是一个元组,该元组包含了每一行数据的键值对)
def read_data_from_csv(csv_file_path):
wb = xlrd.open_workbook(csv_file_path)
sheet = wb.sheet_by_index(0)
rows = sheet.nrows
cols = sheet.ncols
listData = []
for i in range(1, rows):
dictTemp = {}
for j in range(0, cols):
dictTemp[sheet.cell(0, j).value.encode('utf-8')] = sheet.cell(i, j).value
listData.append(dictTemp)
return listData
3.修改页面操作的数据内容
(1).调用步骤2中的方法获取测试数据,并以列表的形式返回
userconfig = pf.read_data_from_csv('..\\data\\test\\test.xlsx')
userconfig返回值如下:[{‘username’: u’s1’, ‘password’: u’1’}](参考步骤1中创建的excel数据)
(2).参数设值
login_page.set_username(userconfig[0].get('username')) # 输入用户名 login_page.set_password(userconfig[0].get('password'))
至此,一个简单的代码与测试数据分离的demo就完成了。后续还需要不断完善public_functions函数。