更新: excel表格中,增加一个headers列,内容为json格式, 如下
二.Excel读取方法
Python我们使用三方库xlrd来读取Excel,使用pip install xlrd安装xlrd。
import xlrd
wb = xlrd.open\_workbook("test\_user\_data.xlsx") # 打开excel
sh = wb.sheet\_by\_name("TestUserLogin") # 按工作簿名定位工作表
print(sh.nrows) # 有效数据行数
print(sh.ncols) # 有效数据列数
print(sh.cell(0, 0).value) # 输出第一行第一列的值`case_name`
print(sh.row\_values(0)) # 输出第1行的所有值(列表格式)
# 将数据和标题组装成字典,使数据更清晰
print(dict(zip(sh.row\_values(0), sh.row\_values(1))))
# 遍历excel,打印所有的数据
for i in range(sh.nrows):
print(sh.row\_values(i))
输出结果
3
5
case_name
['case\_name', 'url', 'method', 'data', 'expect\_res']
{'case\_name': 'test\_user\_login\_normal', 'url': 'http://115.28.108.130:5000/api/user/login/', 'method': 'POST', 'data': '{"name": "张三","password":"123456"}', 'expect\_res': '<h1>登录成功</h1>'}
['case\_name', 'url', 'method', 'data', 'expect\_res']
['test\_user\_login\_normal', 'http://115.28.108.130:5000/api/user/login/', 'POST', '{"name": "张三","password":"123456"}', '<h1>登录成功</h1>']
['test\_user\_login\_password\_wrong', 'http://115.28.108.130:5000/api/user/login/', 'POST', '{"name": "张三","password":"1234567"}', '<h1>失败,用户不存在</h1>']
三.封装读取excel操作
1.新建read_excel.py
我们的目的是获取某条用例的数据,需要3个参数,excel数据文件名data_file,工作簿名sheet,用例名case_name。如果我们只封装一个函数,每次调用(每条用例)都要打开一次excel并遍历一次,这样效率比较低,我们可以拆分成两个函数,一个函数excel_to_list(data_file, sheet),一次获取一个工作表的所有数据,另一个函数get_test_data(data_list, case_name)从所有数据中去查找到该条用例的数据。
import xlrd
def excel\_to\_list(data_file, sheet):
data_list = [] # 新建个空列表,来乘装所有的数据
wb = xlrd.open\_workbook(data_file) # 打开excel
sh = wb.sheet\_by\_name(sheet) # 获取工作簿
header = sh.row\_values(0) # 获取标题行数据
for i in range(1, sh.nrows): # 跳过标题行,从第二行开始取数据
d = dict(zip(header, sh.row\_values(i))) # 将标题和每行数据组装成字典
data_list.append(d)
return data_list # 列表嵌套字典格式,每个元素是一个字典
def get\_test\_data(data_list, case_name):
for case_data in data_list:
if case_name == case_data['case\_name']: # 如果字典数据中case_name与参数一致
return case_data
# 如果查询不到会返回None
if __name__ == '\_\_main\_\_': # 测试一下自己的代码
data_list = excel\_to\_list("test\_user\_data.xlsx", "TestUserLogin") # 读取excel,TestUserLogin工作簿的所有数据