• 记录python接口自动化测试--把测试结果写进excel文件(第九目)


    python中一般使用xlrd(excel read)来读取Excel文件,使用xlwt(excel write)来生成Excel文件(可以控制Excel中单元格的格式),需要注意的是,用xlrd读取excel是不能对其进行操作的:xlrd.open_workbook()方法返回xlrd.Book类型,是只读的,不能对其进行操作。而xlwt.Workbook()返回的xlwt.Workbook类型的save(filepath)方法可以保存excel文件。(参考博客:https://www.cnblogs.com/liuyang92/p/7492336.html)

    因为是对已经存在的excel文件(也就是接口测试用例)进行写操作,所以要把测试结果写进excel文件,需要用到xlutils(依赖于xlrd和xlwt)提供复制excel文件内容和修改文件的功能。

    1.先看一个demo:

    # coding:utf-8
    
    import xlrd
    from xlutils.copy import copy   # 导入xlutils的copy方法
    
    file = 'E:InterfaceTest_Frameworkexcel_json_demodemo3.xlsx'  # 文件路径
    data = xlrd.open_workbook(file)  # 定义一个excel文件的workbook对象
    print('data的类型为:', type(data))
    data_copy = copy(data)  # 获取data的copy对象
    print('data的copy对象类型为:', type(data_copy))
    sheet_copy = data_copy.get_sheet(0)  # 从data_copy对象中获取第一个sheet对象
    
    sheet_copy.write(1, 11, '测试写入内容')  # 向sheet的某个单元格写入值
    data_copy.save(file)  # 写入完成后保存data的copy对象

    下面是excel文件运行前后对比图,可以看到在保留原文件内容不变的情况下,写入了新的值

    2.接下来,把向excel中写入数据的操作封装起来

    在之前的操作excel文件的类中(handle_excel.py)加一个写入数据的方法:

        # 向某个单元格写入数据
        def write_value(self, row, col, value):
            data = xlrd.open_workbook(self.file)  # 打开文件
            data_copy = copy(data)  # 复制原文件
            sheet = data_copy.get_sheet(0)  # 取得复制文件的sheet对象
            sheet.write(row, col, value)  # 在某一单元格写入value
            data_copy.save(self.file)  # 保存文件

     主函数调整:

    # coding:utf-8
    
    from base.run_method import RunMain
    from util.handle_excel import *
    from util.common import CommonUtil
    import json
    
    
    class RunTestCase:
        def __init__(self):
            self.Runmain = RunMain()  # 实例化调用get/post请求对象
            self.data = HandleExcel()  # 实例化操作excel文件对象
            self.common = CommonUtil() # 实例化判断实际结果是否与预期结果一致
    
        def go_run(self):
            rows_count = self.data.get_rows()   # 获取excel行数
            for i in range(1,rows_count):      # 利用行数进行迭代处理每个接口
                url = self.data.get_value(i, get_url())  # 循环获取url的值
                # print(url)
                method = self.data.get_value(i, get_method())  # 循环获取method的值
                data = json.loads(self.data.get_value(i, get_params()))   # 循环获取请求参数,并将得到的数据反序列化
                expect = self.data.get_value(i, get_expectvalue())  # 循环获取期望输出
                # print(data)
                is_run = self.data.get_value(i, get_priority())  # 获取是否运行,即判断excel中priority是不是"H"
                if is_run == 'H':
                    res = self.Runmain.run_main(url, method, data)  # 调用get/post主函数
                    if expect in res:
                        print('测试通过')
                        self.data.write_value(i, get_resultvalue(), 'pass')  # 调用写入数据方法,将实际结果写进excel
                    else:
                        print('测试失败')
                        self.data.write_value(i, get_resultvalue(), 'fail')
    
    
    if __name__ == '__main__':
        run = RunTestCase()
        run.go_run()

    运行结果对比:

        

  • 相关阅读:
    RAID磁盘阵列
    Activiti任务认领
    Activiti 5.18启动流程到完成所有任务之间的数据库变化(转)
    tomcat优化(转)
    DB2 OLAP函数的使用
    PreparedStatement批量处理和事务
    获取JavaScript异步函数的返回值
    DB2 sql报错后查证原因与解决问题的方法
    DB2有五种约束
    连接db2数据库出现No buffer space available (maximum connections reached?)
  • 原文地址:https://www.cnblogs.com/hanmk/p/8712110.html
Copyright © 2020-2023  润新知