zoukankan      html  css  js  c++  java
  • python日志模块的使用

    学习一下python的日志模块logging,可以参考如下博客,写得很详细

    https://www.cnblogs.com/yyds/p/6901864.html

    https://www.cnblogs.com/goodhacker/p/3355660.html

    https://cuiqingcai.com/6080.html

    实践:把日志模块加到requests+excel接口测试框架中

    新建一个logs文件夹,用来存放输出的日志文件;然后在utils工具中创建一个logger.py,封装日志调用方法

    logger.py的内容如下

    # -*- coding:utf-8 -*-
    import logging
    import os
    from utils import getcwd
    
    
    log_path = os.path.dirname(getcwd.get_cwd())
    print(log_path)
    class Logger:
        def __init__(self,loggername):
    
            #创建一个logger
            self.logger = logging.getLogger(loggername)
            self.logger.setLevel(logging.DEBUG)
    
            #创建一个handler,用于写入日志文件
            log_path = os.path.dirname(getcwd.get_cwd())+"/logs/" # 指定文件输出路径,注意logs是个文件夹,一定要加上/,不然会导致输出路径错误,把logs变成文件名的一部分了
            logname = log_path + 'out.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("hmk").get_log().debug("User %s is loging" % 'jeck')

    在主函数run_main.py中使用日志

    # coding: utf-8
    # author: hmk
    
    from base.main import RunMethod
    from get_datas.get_data import GetData
    from utils.handle_excel import HandleExcel
    import json
    from utils.logger import Logger
    
    
    class RunMain:
        def __init__(self):
            """实例化写好的类,备用"""
            self.run_method = RunMethod()
            self.get_data = GetData()
            self.excel = HandleExcel()
            self.logger = Logger(__name__)
    
        def run(self):
            count = self.get_data.get_nrows()
            # print(count)
            for i in range(1, count):
                priority = self.get_data.get_priority(i)  # 获取用例的优先级priority
                url = self.get_data.get_url(i)  # 获取用例的url
                method = self.get_data.get_method(i)  # 获取请求方法
                params = self.get_data.get_params(i)  # 获取参数(此处取出来的数据是字符串格式)
                params_load = json.loads(params)  # 将获取到的参数反序列化,即转化为字典
                except_value = self.get_data.get_except_value(i)  # 获取预期结果值
                if priority == 'H':
                    r = self.run_method.run_main(method, url, params_load, header=None)  # 如果是高优先级用例,则执行
                    # print(r)
                    self.logger.get_log().debug('第'+str(i)+'个接口的返回结果为:%s',r) # 输出接口响应内容
                    # print(type(r))
                    if except_value in r:
                        # print(self.get_data.get_caseSeq(i) + '测试通过')
                        self.logger.get_log().debug('第' + str(i) + '接口测试通过')
                        # self.get_data.write_values(i, 'PASS')  # 调用get_data.py文件中的write_values()方法
                        self.excel.write_value(i, 11, 'pass')  # 调用handle_excel.py文件中的write_value()方法
                    else:
                        # print(self.get_data.get_caseSeq(i) + '执行失败')
                        self.logger.get_log().debug('第' + str(i) + '接口测试不通过')
                        # self.get_data.write_values(i, 'FAIL')
                        self.excel.write_value(i, 11, 'fail')
    
    
    if __name__ == '__main__':
        t = RunMain()
        t.run()

    打印出的日志内容

    这样就可以替代用print来查看代码运行的输出内容了

  • 相关阅读:
    Could note find result map com.xxxx.entity.UserAccountDO
    浏览器通过file://访问文件和通过http://访问文件有什么区别
    FreeMarker template error: The following has evaluated to null or missing: ==> blogger.md [in template "admin/about.ftl" at line 44, column 84]
    2018-01-03 --活动观赏鱼的2017总结及2018年展望
    eclipse open call hierarchy无效
    Mysql 查询重复的记录
    oracle用户、权限操作
    Oracle 修改表操作
    Python 魔法方法详解
    Python __dict__和vars()
  • 原文地址:https://www.cnblogs.com/hanmk/p/10448963.html
Copyright © 2011-2022 走看看