python接口自动化学习(二)日志功能

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信息,我们封装一个函数,这里就不写出来,太简单了

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值