python之测试结果写回excel005

接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

原文地址:https://www.cnblogs.com/july-1016/p/14090261.html