1.创建log.py 文件
import logging, os
from FlychordInterfaceTest.getPathInfo import get_Path
logging.basicConfig(level=logging.DEBUG, # log level
# format='[%(asctime)s] %(levelname)s [%(funcName)s: %(filename)s, %(lineno)d] %(message)s', # log格式
format='[%(asctime)s] %(levelname)s %(message)s', # log格式
datefmt='%Y-%m-%d %H:%M:%S', # 日期格式
filename=os.path.join(get_Path(),'report','logs.log'), # 日志输出文件
filemode='a') # 追加模式
if __name__ == '__main__':
logging.info("hello")
运行结果:
[2020-03-24 17:04:57] INFO [<module>: log.py, 12] hello
注意logging.basicConfig(level=logging.DEBUG,,此处设置输出日志优先级
Log Level:
- CRITICAL: 用于输出严重错误信息
- ERROR: 用于输出错误信息
- WARNING: 用于输出警示信息
- INFO: 用于输出一些提示信息
- DEBUG: 用于输出一些调试信息
优先级 CRITICAL > ERROR > WARNING > INFO > DEBUG
指定level = logging.DEBUG
所有等级大于等于DEBUG的信息都会输出
若指定level = logging.ERROR
WARNING,INFO,DEBUG小于设置级别的信息不会输出
日志格式:
- %(levelno)s: 打印日志级别的数值
- %(levelname)s: 打印日志级别名称
- %(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
- %(filename)s: 打印当前执行程序名
- %(funcName)s: 打印日志的当前函数
- %(lineno)d: 打印日志的当前行号
- %(asctime)s: 打印日志的时间
- %(thread)d: 打印线程ID
- %(threadName)s: 打印线程名称
- %(process)d: 打印进程ID
- %(message)s: 打印日志信息
2.添加log
在代码中添加log
import unittest # 导包
import ddt, json
from FlychordInterfaceTest import readExcel, getURL, readConfig
from FlychordInterfaceTest.common import configHttp, log
# 获取接口文档第一页数据
excel = readExcel.element_list(readExcel.Excel('DATA.xlsx', 0).read())
@ddt.ddt
class test02(unittest.TestCase):
@classmethod
def setUpClass(cls): # 所有用例运行之前执行一次
pass
@classmethod
def tearDownClass(cls): # 所有用例运行之后执行一次
pass
@ddt.data(*excel)
@ddt.unpack
def test_02(self, title, method, path, headers, request, response):
self._testMethodDoc = title # 动态的用例描述
self._testMethodName = title
info = self.checkResult(method, path, request, headers)
log.logging.info('code:' + info['code'] + '\t' + info['message'] + '\t' + title)
# print(response['message'], info['message'])
self.assertEqual(response['message'], info['message'])
def checkResult(self, method, headers, data, interface):
pass
# print(method, interface, data, headers)
url = getURL.get_url(interface)
try:
info = configHttp.run_main(method, url, data, headers)
return info
except:
return '接口请求出错'
if __name__ == '__main__':
unittest.main(verbosity=1)
运行结果:
[2020-03-24 17:24:06] INFO :code:200 请求成功 教室列表
[2020-03-24 17:24:07] INFO :code:200 请求成功 查询琴行某教室的排班表
[2020-03-24 17:24:07] INFO :code:200 请求成功 登录
因为每个用例都要输出很多log信息,我们封装一个函数,这里就不写出来,太简单了