最近捣鼓python接口自动化测试过程,想要把测试结果写入到excel中,于是开始网上各种搜集方法,后来发现这两种最基本方法,并进行了对比,供需要的小伙伴参考
(我这里是在源文件基础上,复制一个文件,然后把测试结果写入到复制文件中)。
方法一:利用xlutils.copy
步骤:
1、安装xlrd、xlwt,再安装xlutils(由于xlutils依赖xlrd,xlwt)
pip install xlrd
pip install xlwt
pip install xlutils
2、导包 from xlutils.copy import copy
3、打开要复制的文件:old_wb=xlrd.open_workbook(filename)
4、复制一个新的workbook,copy(old_wb)
5、获取要操作的sheet:用get_sheet(sheetname)方法
6、对sheet进行写入数据操作:sheet.write(row,col,value)
7、保存文件:new_wb.save(文件路径+文件名)
import xlwt
import xlrd
from xlutils.copy import copy
import openpyxl
#方法一:
def write_value_xlu(row,col,value):
#先用xlrd打开源文件
file_path = r'C:\Users\admin\PycharmProjects\登陆接口自动化'
file_name = '登陆接口测试用例data.xls'
#打开文件,formatting_info=True可保留文件原来的格式
old_wb = xlrd.open_workbook(file_path+"\\data\\"+file_name,formatting_info=True)
#利用xlutils模块中的copy类,copy一个workbook
new_wb = copy(old_wb)
#获取想要的sheet
new_sheet = new_wb.get_sheet('sheet1')
#指定单元格,写入值
new_sheet.write(row,col,value)
#保存新文档到指定目录
new_wb.save(file_path+"\\report\\"+"test_result.xls")
write_value_xlu(1,11,'pass')
温馨提醒:open_workbook(filename,formatting_info=True)中的formatting_info=True是为了把文件的格式也复制下来,否则新文件格式会丢失。
方法二:openpyxl
步骤:
1、安装 openpyxl
pip install openpyxl
2、导包 import openpyxl
from openpyxl import load_workbook
3、打开要操作文件:openpyxl.load_workbook(filename)
4、获取sheet:wb['sheetname']
5、给单元格写入数据:sheet.cell(row,col).value
6、保存文件:wb.save(文件路径+文件名)
def write_value_open(row,col,value):
# 先用xlrd打开源文件
file_path = r'C:\Users\admin\PycharmProjects\登陆接口自动化'
file_name = '登陆接口测试用例data副本.xlsx'
wb = openpyxl.load_workbook(file_path+"\\data\\"+file_name)
work_sheet = wb['sheet1']
#work_sheet['K2']='pass' #此种写法后面可能容易报错,保险起见我使用了下面的方法
work_sheet.cell(row=row,column=col).value = value
wb.save(file_path+"\\report\\"+'test_result_3.xlsx')
write_value_open(2,11,'pass')
通过上面两种方法,是不是可以看出:方法二利用openpyxl模块,代码相对更简单一些呢~~
openpyxl和xlutils功能很强大,后面我会持续更新,欢迎关注~~