接004随笔,已经从excel获取测试数据并且成功执行测试用例的前提下,我们如何将测试结果写回excel指定列呢?
思路:1. 在do_excel类中专门写一个write_back()函数 2.在主程序中调用该方法
from openpyxl import load_workbook class DoExcel: def get_data(self,file_name,sheet_name): ...... #写回测试结果的静态方法:result为测试结果 @staticmethod def write_back(file_name,sheet_name,row,result):#依次传入参数:文件名、sheet页名称、行数、测试结果 wb = load_workbook(file_name) sheet = wb[sheet_name] sheet.cell(row,10).value = result #保存测试结果到指定列row wb.save(file_name)#必须保存文件
主程序调用写回方法:
from tools.http_request import HttpRequest from tools.do_excel import DoExcel #引用DoExcel模块 def run(test_data):#传入列表嵌套字典的数据格式 for item in test_data:#循环执行用例 print("正在测试的用例标题:{0}".format(item["title"])) res = HttpRequest().http_request(item["method"], item["url"],eval(item["header"]), item["data"]) print("测试结果是:{0}".format(res.json())) DoExcel().write_back("\test_data\test_case.xlsx","login_case",item["case_id"]+1,str(res.json()))#row与case_id相差1 if __name__ == '__main__': test_data = DoExcel().get_data("\test_data\test_case.xlsx","login_case") run(test_data)
注意:
1.写回excel的测试结果必须强转为str,否则会报错:raise ValueError("Cannot convert {0!r} to Excel".format(value))
2.执行写回时,必须将excel文件关闭,否则会报错:PermissionError: [Errno 13] Permission denied