# -*- coding:utf-8 -*- import xlwt import xlrd import requests import json from openpyxl import load_workbook test_data = [] titles = [] fname = u'接口测试.xlsx' # 把Excel加载到内存中==获取Excel中的数据 def load(): # 打开文档 data = xlrd.open_workbook(fname) # print data.sheets()# 得到的是文档中所有行内容的对象-是个列表 # 获取一个sheet sheet = data.sheets()[0] # 获取总行数和总列数 rows = sheet.nrows cols = sheet.ncols global titles # 获取表头=列表 titles = sheet.row_values(0) # 获取每行的数据 for row in range(1,rows): # 获取每行的内容=列表 one_content = sheet.row_values(row) # 把每行内容生成字典 data = dict(map(lambda x,y:[x,y],titles,one_content)) # 把每行的数据及行号放入元祖中再放入列表 test_data.append((row,data)) print test_data def update_xlsx(row,col,value,fname): # 打开文件 workbook = load_workbook(fname) # 找到要修改的表 sheet =workbook.get_sheet_by_name('Sheet1') # 插入数据 sheet.cell(row=row,column=col).value=value # 保存文档 workbook.save(fname) ''' 参数: row是数据的行标识 data每行数据内容的标识 ''' # 处理get请求数据(使用get方法执行一条用例) def test_get(row,data): # 准备url url = data.get('url') # 准备参数 args = data.get('args') if not args: #空字符串“” 与None 表示的意义不同 arg = None # 发送请求=获取请求数据 rs = requests.get(url,params=args) print rs rs = rs.content print rs # 预期结果(将字典转换为json) expected_rs = json.loads(data.get('expact_result')) print expected_rs # 实际结果(将字典转换为json) shiji_rs = json.loads(rs) print shiji_rs if expected_rs == shiji_rs: result = u'测试通过' else: result = u'测试失败' print result # 将测试数据及结果写入用例中 print row+1,titles.index('shiji_rs')+1 update_xlsx(row+1,titles.index('shiji_rs')+1,rs,fname) update_xlsx(row+1,titles.index('rs')+1,result,fname) # 处理post请求数据(使用post方法执行一条用例) def test_post(row,data): # 准备url url = data.get('url') # 准备参数 args = data.get('args') if not args: #空字符串“” 与None 表示的意义不同 arg = None else: args = json.loads(args) # 发起请求 rs = requests.post(url,args) # 获取请求数据 rs = rs.content # 获取实际结果 shiji_rs = json.loads(rs) # 获取预期结果-转换为json数据 yuqi_rs = data.get('expact_result') yuqi_rs = json.loads(yuqi_rs) if shiji_rs == yuqi_rs: result = '测试通过' else: result = '测试失败' print result update_xlsx(row+1,titles.index('shiji_rs')+1,rs,fname) update_xlsx(row+1,titles.index('rs')+1,result,fname) # 获取每行用例 def main(): load() print test_data for row,data in test_data: print data.get('method') if data.get('method') == 'get': test_get(row,data) elif data.get('method') == 'post': test_post(row,data) # # print row,data if __name__ == '__main__': main()
接口测试-对测试用例的读取与写入
最新推荐文章于 2023-10-15 14:44:23 发布