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来查看代码运行的输出内容了
python日志模块的使用的更多相关文章
- python日志模块logging
python日志模块logging 1. 基础用法 python提供了一个标准的日志接口,就是logging模块.日志级别有DEBUG.INFO.WARNING.ERROR.CRITICAL五种( ...
- python日志模块
许多应用程序中都会有日志模块,用于记录系统在运行过程中的一些关键信息,以便于对系 统的运行状况进行跟踪.在.NET平台中,有非常著名的第三方开源日志组件log4net,c++中,有人们熟悉的log4c ...
- Python 日志模块实例
python 打印对象的所有属性值: def prn_obj(obj): print '\n'.join(['%s:%s' % item for item in obj.__dict__.it ...
- Python日志模块logging用法
1.日志级别 日志一共分成5个等级,从低到高分别是:DEBUG INFO WARNING ERROR CRITICAL. DEBUG:详细的信息,通常只出现在诊断问题上 INFO:确认一切按预期运行 ...
- python日志模块logging学习
介绍 Python本身带有logging模块,其默认支持直接输出到控制台(屏幕),或者通过配置输出到文件中.同时支持TCP.HTTP.GET/POST.SMTP.Socket等协议,将日志信息发送到网 ...
- python日志模块笔记
前言 在应用中记录日志是程序开发的重要一环,也是调试的重要工具.但却很容易让人忽略.之前用flask写的一个服务就因为没有处理好日志的问题导致线上的错误难以察觉,修复错误的定位也很困难.最近恰好有时间 ...
- Python 日志模块详解
前言 我们知道查看日志是开发人员日常获取信息.排查异常.发现问题的最好途径,日志记录中通常会标记有异常产生的原因.发生时间.具体错误行数等信息,这极大的节省了我们的排查时间,无形中提高了编码效率.所以 ...
- Python日志模块的管理(二)
日志模块可以通过封装一个类,也可以通过配置文件取管理 新建1个log.ini文件 [loggers] keys=root [handlers] keys=fileHandler,streamHandl ...
- Python 日志模块 logging通过配置文件方式使用
vim logger_config.ini[loggers]keys=root,infoLogger,errorlogger [logger_root]level=DEBUGhandlers=info ...
随机推荐
- .Net Core:Middleware中间件管道
.NetCore中的Middleware是装配到管道处理请求和响应的组件:每个组件都可以决定是否继续进入下一个管道.并且可以在进入下一个管道前后执行逻辑: 最后一个管道或者中断管道的中间件叫终端中间件 ...
- FB面经 Prepare: Even Tree
You are given a tree (a simple connected graph with no cycles). The tree has nodes numbered from to ...
- 【Python学习】iterator 迭代器小练习
http://anandology.com/python-practice-book/iterators.html Problem 1: Write an iterator class revers ...
- 系统学习PHP的一些思路
作为一名新进的PHPer,迫切的想提高自己的编码水平,目前市面上几乎没有高手来给新手指点出一条相对靠谱的途径. 首先,面对PHP众多杂乱无章的各种函数,到底该怎么去理清其各者之间的关系,经过一段时间的 ...
- lock 单例模式
单例模式只允许创建一个对象,因此节省内存,加快对象访问速度,因此对象需要被公用的场合适合使用,如多个模块使用同一个数据源连接对象等等 网站的计数器,一般也是采用单例模式实现,否则难以同步 单例模式要素 ...
- 百度API经纬度和地址互相查询
/** * 获取地址对应的坐标 * @param $address * @return array */ function getAddressPoint($address){ $lng = 0; $ ...
- Linux替换文件内容sed命令
sed -e 4a\newline testfile //在第四行后添加一行,并将结果输出到标准输出.-e,以指定脚本处理文本文件:a,新增. nl /etc/passwd | sed '2,5d' ...
- Java面试题整理---网络篇
1.BIO.AIO和NIO的概念及区别? 2.什么是长连接和短连接? 3.http1.0.http1.1和http2.0的区别? 4.https和http的区别? 5.https的工作原理? ...
- dbf,Idx 文件格式
NDbfReaderEx about_indexes ntx file format
- SpringBoot+Thymeleaf问题
springboot在controller返回数据到thymeleaf报404 用springboot做一个例子,访问controller可以返回数据,但是到thymeleaf却报404, 检查发现路 ...