zoukankan      html  css  js  c++  java
  • 接口自动化测试 python+request+excel(八)

    完善接口自动化测试框架,加入日志模块

    #!/usr/bin/env python3
    # -*-coding:utf-8-*-
    # __author__: hunter
    
    import logging
    import os
    import time
    
    
    
    class Logger:
        def __init__(self, loggername):
            # 创建一个logger
            self.logger = logging.getLogger(loggername)
            self.logger.setLevel(logging.DEBUG)
    
            # 创建一个handler,用于写入文件
            rq = time.strftime('%Y%m%d', time.localtime(time.time()))  # 给文件名加上时间
            log_path = os.path.dirname(os.path.abspath('.')) + '/logs/'  # 指定文件输出路径,注意logs是一个文件夹,
            logname = log_path + rq + 'test.log'  # 指定输出的日志文件名
            fh = logging.FileHandler(logname, encoding='utf-8')  # 指定utf-8格式编码,避免输出的日志文本乱码
    
            fh.setLevel(logging.DEBUG)
    
            # 创建一个handler,用于将日志输出到控制台
            ch = logging.StreamHandler()
            ch.setLevel(logging.DEBUG)
    
            # 定义handler的输出格式
            formatter = logging.Formatter('%(asctime)s-%(name)s-%(levelname)s-%(message)s')
            fh.setFormatter(formatter)
            ch.setFormatter(formatter)
    
            # 给logger添加handler
            self.logger.addHandler(fh)
            self.logger.addHandler(ch)
    
        def get_log(self):
            """定义一个函数,回调logger实例"""
            return self.logger
    
    
    if __name__ == '__main__':
        t = Logger("hunter").get_log().debug("User %s is loging" % 'jeck')

    打开日志文件:

     在主函数中调用日志模块:

    #!/usr/bin/env python3
    # -*-coding:utf-8-*-
    # __author__: hunter
    
    from conn.run_demo import RunMain
    from interface.tool.handle_excel import *
    from interface.tool.logger import Logger
    
    import json
    
    
    class RunTestCase:
        def __init__(self):
            self.Runmain = RunMain()  # 实例化调用get/post请求基类
            self.data = HandleExcel()  # 实例化操作Excel文件类
            self.logger = Logger(__name__)
    
        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的值
                method = self.data.get_value(i, get_mothod())  # 循环获取method的值
                print(self.data.get_value(i, get_params()))
                data = json.loads(self.data.get_value(i, get_params()))  # 循环获取请求参数
                expect = self.data.get_value(i, get_expectvalue())  # 循环获取期望输出
                is_run = self.data.get_value(i, get_priority())  # 获取是否运行,即判断Excel中priority是不是为“high"
                if is_run == 'high':
                    res = self.Runmain.run_main(url, method, data)  # 调用主函数,res就是返回的参数
                    self.logger.get_log().debug('第' + str(i) + '个接口的返回结果为:%s', res)  # 日志:输出接口响应内容
                    self.data.write_value(i, get_actualvalue(), res)  # 将实际结果写入Excel中
                    if expect in res:  # res返回的内容是否包含expect,是否与期望一致
                        # print('测试通过')
                        self.logger.get_log().error('第' + str(i) + '接口测试通过')
                        self.data.write_value(i, get_resultvalue(), 'pass')  # 调用写入数据方法,将结果写进Excel
                    else:
                        # print("测试失败")
                        self.logger.get_log().info('第' + str(i) + '接口测试失败')
                        self.data.write_value(i, get_resultvalue(), 'fail')
    
    
    if __name__ == '__main__':
        run = RunTestCase()
        run.go_run()

    查看日志输出:

  • 相关阅读:
    How To Change Database Name
    Oracle备份与恢复案例
    Linux 下安装 Oracle9i
    在 Linux x86 上安装 Oracle 数据库 10g_1
    在 Linux x86 上安装 Oracle 数据库 10g_2
    Oracle9i数据库DataGuard实施及维护手册2
    在 Linux x86 上安装 Oracle 数据库 10g_3
    流程企业(钢铁企业)的制造执行系统
    理解和使用Oracle分析工具LogMiner
    Oracle9i数据库Data Guard实施及维护手册 1
  • 原文地址:https://www.cnblogs.com/hemingwei/p/11595987.html
Copyright © 2011-2022 走看看