python学习笔记(日志系统实现)
博主今天在自己的接口自动化框架中添加了日志系统
基于python自带的logging库、包括日志主函数、生成日志文件:
# -*- coding: utf-8 -*-
# 日志系统
# 时间:2017-08-31
# 姓名:xx import logging
import os
from datetime import datetime class MainLog:
def __init__(self):
pass @staticmethod
def getLog():
logging.basicConfig(
# filename=MainLog.logTxt(), # 日志输出到文件
level=logging.DEBUG,
format="%(asctime)s - %(levelname)s - %(message)s",
datefmt="%Y-%m-%d %H:%M:%S",
)
return logging @staticmethod
def logTxt():
today_name = datetime.today().strftime("%Y%m%d")
log_name = datetime.today().strftime("%Y%m%d%H%M%S") + ".txt"
# 新建当天的文件夹路径
path = "F:\\Logs\\" + today_name + "\\"
if os.path.exists(path):
pass
else:
os.makedirs(path)
# 日志文件路径名称
file_path = path + log_name
return file_path
# -*- coding: utf_8 -*-
# 基础接口请求方法
# 时间:2017-08-31
import requests
from requests.exceptions import ReadTimeout, ConnectionError, RequestException
from Log.main_log import MainLog class MainResponse:
def __init__(self):
pass @staticmethod
def mainPost(url=None, params=None, json=None):
u"""
url: 接口请求的url
params: 接口请求的请求头
json: 接口请求的json
"""
logger = MainLog.getLog()
try:
response = requests.post(url=url, params=params, json=json, timeout=10)
code = response.status_code
text = response.text
logger.debug(u"接口请求地址:")
logger.debug(url)
logger.debug(u"接口请求头:")
logger.debug(params)
logger.debug(u"接口请求参数:")
logger.debug(json)
logger.debug(u"接口请求返回码:")
logger.debug(code)
logger.debug(u"接口返回信息:")
logger.debug(text)
return text
except ReadTimeout:
logger.error(u"请求超时")
except ConnectionError:
logger.error(u"请求连接错误")
except RequestException:
logger.error(u"返回错误")
然后在自己封装的post请求中把日志格式加进去
DEBUG级别的是普通的内容
ERROR级别的是错误场景
最后在unittest框架中执行自动化用例、生成测试报告:

python学习笔记(日志系统实现)的更多相关文章
- Python学习笔记(六)
Python学习笔记(六) Ubuntu重置root密码 Ubuntu 16.4 目录结构 Ubuntu 命令讲解 1. Ubuntu重置root密码 启动系统,显示GRUB选择菜单(如果默认系统启动 ...
- Python学习笔记,day5
Python学习笔记,day5 一.time & datetime模块 import本质为将要导入的模块,先解释一遍 #_*_coding:utf-8_*_ __author__ = 'Ale ...
- python学习笔记--Django入门0 安装dangjo
经过这几天的折腾,经历了Django的各种报错,翻译的内容虽然不错,但是与实际的版本有差别,会出现各种奇葩的错误.现在终于找到了解决方法:查看英文原版内容:http://djangobook.com/ ...
- OpenCV之Python学习笔记
OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书< ...
- Python学习笔记(十三)
Python学习笔记(十三): 模块 包 if name == main 软件目录结构规范 作业-ATM+购物商城程序 1. 模块 1. 模块导入方法 import 语句 import module1 ...
- Python学习笔记(十一)
Python学习笔记(十一): 生成器,迭代器回顾 模块 作业-计算器 1. 生成器,迭代器回顾 1. 列表生成式:[x for x in range(10)] 2. 生成器 (generator o ...
- Python学习笔记(九)
Python学习笔记(九): 装饰器(函数) 内置函数 1. 装饰器 1. 作用域 2. 高阶函数 3. 闭包 如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就 ...
- Python学习笔记(七)
Python学习笔记(七): 深浅拷贝 Set-集合 函数 1. 深浅拷贝 1. 浅拷贝-多层嵌套只拷贝第一层 a = [[1,2],3,4] b = a.copy() print(b) # 结果:[ ...
- Deep learning with Python 学习笔记(10)
生成式深度学习 机器学习模型能够对图像.音乐和故事的统计潜在空间(latent space)进行学习,然后从这个空间中采样(sample),创造出与模型在训练数据中所见到的艺术作品具有相似特征的新作品 ...
- python学习笔记目录
人生苦短,我学python学习笔记目录: week1 python入门week2 python基础week3 python进阶week4 python模块week5 python高阶week6 数据结 ...
随机推荐
- 二叉树各种相关操作(建立二叉树、前序、中序、后序、求二叉树的深度、查找二叉树节点,层次遍历二叉树等)(C语言版)
将二叉树相关的操作集中在一个实例里,有助于理解有关二叉树的相关操作: 1.定义树的结构体: typedef struct TreeNode{ int data; struct TreeNode *le ...
- SQL Server 2008 R2数据库镜像部署图文教程
数据库镜像是一种针对数据库高可用性的基于软件的解决方案.其维护着一个数据库的两个相同的副本,这两个副本分别放置在不同的SQL Server数据库实例中 概述 “数据库镜像”是一种针对数据库高可用性的基 ...
- Asp.net页面生存周期【转】
ASP.NET 页面生存周期中的关键事件 要想深入ASP.NET页面编程,就必须了解页面生存周期各个阶段及相关事件.重写相关事件和方法可以使我们更好的控制页面呈现. # 事件或方法 功能 描述 1 I ...
- BBS - 表、登录、文件上传、注册
一.博客系统得表关系 models.py from django.db import models from django.contrib.auth.models import AbstractUse ...
- SQL基础--查询之三--嵌套查询
SQL基础--查询之三--嵌套查询
- Linux学习-->如何通过Shell脚本实现发送邮件通知功能?
1.安装和配置sendmail 不需要注册公网域名和MX记录(不需要架设公网邮件服务器),通过Linux系统自带的mail命令即可对公网邮箱发送邮件.不过mail命令是依赖sendmail的,所以我们 ...
- qt——exec()的基本用法
qt中 if(my1.exec()==QDialog::Accepted) 是什么意思 这个先说这个my1.exec()这个就是个等待消息的循环,就是说它在等待你给的命令. 再说这个QDialog:: ...
- (1.1)DML增强功能-CTE
1.CTE的通用形式 WITH temp_name as ( CTE查询结果集 ) 释义: (1)with/as :关键字 (2)temp_name:为CTE临时使用名称,可以看初学者做是一个临时表 ...
- 如何通过iframe调用其他页面的内容
我们在建站的时候经常会在页面出现同样的内容,比如公司简介之类的,这些东西很长,会减低网页的原创程度,相似度太高,对SE不是很友好.这时我们可以考虑把这部分内容写成一个单独的简单页面,然后通过ifram ...
- nodejs Async详解之二:工具类
Async中提供了几个工具类,给我们提供一些小便利: memoize unmemoize log dir noConflict 1. memoize(fn, [hasher]) 有一些方法比较耗时,且 ...