在写自动化测试脚本的时候,使用的日志模块。
# -*- coding:utf-8 -*-
import logging
import os
# from utils import getcwd
# log_path = os.path.dirname(getcwd.get_cwd())
log_path = './logs/log沙盒'
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 + '.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
def get_log(self):
return self.logger
if __name__ == '__main__':
t = Logger("hmk").get_log().debug("User %s is loging" % 'jeck')
在需要打印日志的地方,调整为以下代码,不要忘记导入。
from utills.loger import Logger
class Feed():
def __init__(self):
self.logger = Logger(__name__)
def create_sign(self,options):
del options['sign']
sorted_options = [(k, options[k]) for k in sorted(options)]
sign_parts = []
for k,v in sorted_options:
sign_parts.append('{}={}'.format(k, urllib.parse.quote_plus(str(v))))
s = '&'.join(sign_parts)
token = '此处不可泄漏'
s = s + '&token=' + token
k = parse.unquote(s)
sign = hashlib.md5(bytes(k,'utf-8')).hexdigest()
# sign = hashlib.md5(s.encode("utf-8")).hexdigest()
return sign
def get_response(self,url,options):
request_url = url + urlencode(options)
new_url = parse.unquote_plus(request_url)
# print('request_url为:', new_url)
response = requests.get(new_url)
return json.dumps(response.json(), indent=2, sort_keys=False, ensure_ascii=False)
def run(self,url,options):
options['timestamp'] = int(time.time())
sign = self.create_sign(options)
options['sign'] =sign
response_str = self.get_response(url,options)
self.logger.get_log().debug('请求URL为:%s,\n\t请求参数为:%s,\n\t响应参数为:\n\t%s\n\t' % (url, options, response_str)) # 输出接口响应内容
return response_str
if __name__ == '__main__':
feed = Feed()
代码有点low,不过在努力中。此处有烟花。。。。。