python自动化测试添加日志_Python自动化测试之日志记录

2023-11-19

前言:

在任何一个软件开发过程中,日志记录都是一个必须要做的事。记录日志,有助于问题排查,后续的大数据统计也要需要使用日志提供原始数据。

Python日志库:

logging --- Python 的日志记录工具 这是Python官方提供的日志记录库。优点在于不用安装,直接导入使用即可。

日志等级:

在使用python记录日志前,需要先了解一下什么叫日志等级。还有就是为什么要分等级。首先说明一下,日志等级就是日记录中过程中对输出数据的一个定义,日志分等级的好处在于容易查找和根据等级对日志进行统计,然后分析系统可能存在的问题,比如有一个日志文件,里面有一半是ERROR等级的记录,那么是不是可以反映出系统设计存在问题?日志等级通常可以分为以下几类:

DEBUG:程序调试bug时使用

INFO:程序正常运行时使用

WARNING:程序未按预期运行时使用,但并不是错误,如:用户登录密码错误

ERROR:程序出错误时使用,如:IO操作失败

CRITICAL:特别严重的问题,导致程序不能再继续运行时使用,如:磁盘空间为空,一般很少使 用

在生产环境中一般只需要使用INFO,WARNING,ERROR三个类别来记录就可以满足记录日志的需求。至于什么时候需要使用哪种,这个要配合实际的代码来选择。

logging尝试:

在pycharm中新建一个LogTest.py文件,将以下代码复制进去并运行:

# -*- coding: utf-8 -*-

import logging

#配置日志文件

logging.basicConfig(

filename='example.log',#保存的文件名

level=logging.DEBUG,

datefmt='[%Y-%m-%d%H:%M:%S]',#日期格式

format='%(asctime)s%(levelname)s%(filename)s[%(lineno)d]%(threadName)s:%(message)s',#保存数据格式

)

logging.debug('这个是调试时记录的日志信息')

logging.info('程序正常运行时记录的日志信息')

logging.warning('程序警告记录的信息')

logging.critical("特别严重的问题")

logging.error("程序错误时的记录,比如网络请求过慢等")

运行结果:

部份参数说明:

"""

format格式设置说明:

asctime:日期信息

levelname:日志等级

filename:当前执行程序的文件名

lineno:程序运行的行数

threadName:线程名称

message:具体的描述信息

"""

返回结果:

[2020-12-10 11:21:37] DEBUG LogTest.py [11] MainThread : 这个是调试时记录的日志信息

[2020-12-10 11:21:37] INFO LogTest.py [12] MainThread : 程序正常运行时记录的日志信息

[2020-12-10 11:21:37] WARNING LogTest.py [13] MainThread : 程序警告记录的信息

[2020-12-10 11:21:37] CRITICAL LogTest.py [14] MainThread : 特别严重的问题

[2020-12-10 11:21:37] ERROR LogTest.py [15] MainThread : 程序错误时的记录,比如网络请求过慢等

返回结果说明:

[2020-12-10 11:21:37] 日志记录时间

DEBUG 日志等级

LogTest.py 执行的文件名

[11] 代码行数

MainThread 主线程

: 冒号后面就是你记录的数据

在实际项目中使用:

以我们前两章的http接口测试demo为例,配合一起使用,在pycharm中记新建一个Request.py文件,复制以下代码并运行:

import requests

import pandas

import time

import logging

#http请求demo

def GetTest():

#接口请求

url="https://openapi.dvr163.com/message/nonce"

Param={ # 传递的参数,字典类型,所有参数写在这里即可

"method":"get"

}

logging.info("发起Get请求,获取接口参数")

Rque=requests.get(url,Param) # 发起Get请求

logging.info("请求成功")

#测试数据

data={

"Interface":"获取服务器验证码", #接口名称

"time":time.strftime('%Y-%m-%d_%H:%M:%S', time.localtime(time.time())), #测试时间,这里使用格式化时间,

"StatusCode":[Rque.status_code] ,#接口响应状态码

"Responseime":[Rque.elapsed.total_seconds()],#接口响应时间

"Response DATA": Rque.text, #响应的数据,这里建议使用text,因为不是每个接口都返回json格式

"Request body": Rque.request.body, # 发送的数据,get请求的数据会在url中

"Url": Rque.url, # 请求的url

#更多参数请自行添加

}

logging.info("测试数据写入csv文件中")

#写入csv中,以下两行代码建议封装成函数

dataCSV = pandas.DataFrame(data)

dataCSV.to_csv("chen.csv", index=False, mode="a", header=False, encoding="GBK")

logging.info("写入csv文件成功")

if __name__ == '__main__':

logging.basicConfig(

filename='./example.log',

level=logging.DEBUG,

datefmt='[%Y-%m-%d%H:%M:%S]',

format='%(asctime)s%(levelname)s%(filename)s[%(lineno)d]%(threadName)s:%(message)s',

)

GetTest()

运行结果:

说明一下:

在记录日志过程中,需要配置日志文件的输出路径,输出格式这些参数。如果只是单个py文件,则可以直接写在函数里面,但是项目分为多个模块时,不可能每个函数都配置一次,这样是不利于代码维护的。因此,在主函数中设置即可,logging只需在主函数中设置一次即可,而那些被调用的模块不需要设置,所以在主文件的if __name__ =='__main__':里面把配置信息设置即可,其他模块只需直接导入使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python自动化测试添加日志_Python自动化测试之日志记录 的相关文章

  • Android SurfaceView

    下面就贴上一个小程序代码 主要运用SurfaceView来实现在屏幕上画一个圆 你可以通过按方向键和触摸屏幕来改变圆的位置 代码 Activity java view plain copy print package com view im
  • TypeError: 'function' object is not subscriptable

    报错 function object is not subscriptable 原因是Hi是个匿名函数 应该用 而不是 改成 即可 像这种问题TypeError function object is not subscriptable 一般
  • 迷宫问题java老鼠走迷宫(回溯法,递归,二维数组)(超级容易理解)

    回溯法迷宫问题 思路 利用回溯法和递归思想解决 findWay 方法就是专门来找出迷宫的路径 如果找到 就返回 true 否则返回 false map 就是二维数组 即表示迷宫 i j 就是老鼠的位置 初始化的位置为 1 1 因为我们是递归
  • mysql索引实现

    目前大部分数据库系统及文件系统都采用B Tree B树 或其变种B Tree B 树 作为索引结构 B Tree是数据库系统实现索引的首选数据结构 在MySQL中 索引属于存储引擎级别的概念 不同存储引擎对索引的实现方式是不同的 本文主要讨
  • Ubuntu下无法看到共享文件夹的解决办法

    1 输入以下指令 确定共享文件夹是否设置成功 vmware hgfsclient 若是设置成功 会输出贡献文件夹的名字 2 如果已经设置了共享文件夹 请输入下列指令 如果之前没有命令包则先执行sudo apt get install ope
  • 在linux下如何查看局域网的所有主机的ip地址

    策略 用nmap对局域网扫描一遍 然后查看arp缓存表就可以知道局域内ip对应的mac了 nmap比较强大也可以直接扫描mac地址和端口 执行扫描之后就可以 cat proc net arp查看arp缓存表了 或者使用命令arp a 参考
  • 【Goland】巧妙用批量替换Replace

    今天想提一嘴 IDE 的一个功能 就是批量替换 Replace in Path 大家可以按快键键 commnd 进入 Preference 然后搜索 Keymap 也就是快键键 然后搜索 Replace 找到批量替换的快键键 因为快键键就是
  • C# 处理异常

    using System using System Collections Generic using System Linq using System Text namespace Ch13CardLib public class Car
  • YAML 文件语法学习

    一 概述 YAML是一个类似 XML JSON 的标记性语言 YAML 强调以数据为中心 并不是以标识语言为重点 YAML 是一种较为人性化的数据序列化语言 可以配合目前大多数编程语言使用 YAML 的语法比较简洁直观 特点是使用空格来表达
  • 解决打印org.apache.http.wire,org.apache.http.headers日志的问题

    最近在调试接口的过程中 发现使用httpClient的时候 控制台输出了很多org apache http wire org apache http headers相关的日志 不便于我观察自己调试业务过程中输出的日志 内容如下 10 02
  • 如何把一张照片用PS做成漫画风格

    如何把一张照片用PS做成漫画风格 原素材 漫画天空 1 打开ps 打开素材 然后按住ctrl j 复制一个图层 并修改好名字 如下图操作 2 执行 滤镜 滤镜库 干画笔 如图所示 三个参数分别是 0 10 2 3 执行 滤镜 Camera
  • Box2D C++ 教程-查询 World

    声明 本文翻译自Box2D C tutorial World querying 仅供学习参考 查询World 通常你可能想知道在给定的场景中都有哪些实体 例如有一个炸弹爆炸了 周围的所有实物都会受到不同程度的破坏 那么在RTS 译者注 Re
  • java计算机毕业设计景区在线购票系统源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计景区在线购票系统源码 mysql数据库 系统 lw文档 部署 java计算机毕业设计景区在线购票系统源码 mysql数据库 系统 lw文档 部署 本源码技术栈 项目架构 B S架构 开发语言 Java语言 开发软件 i
  • 【转】结构体中Char a[0]用法——柔性数组

    有如下定义 typedef struct char a char b 0 其中元素Char b 0 叫做柔性数组 主要用于使结构体包含可变长字段 详细内容如下 柔性数组 柔性数组结构成员 C99中 结构中的最后一个元素允许是未知大小的数组
  • css hover 控制其他元素_CSS学习小结

    css语法 Selector Dcclaration Selector Property Value CSS注释 注释 CSS Selector 选择器 id class id id class class 插入样式表 外部样式表 内部样式
  • 深入浅出SQL(6)-聪明的表设计

    该系列文章系个人读书笔记及总结性内容 任何组织和个人不得转载进行商业活动 聪明的表设计 为什么要规范化 本章多是理论 请注意理解 我们到目前为止创建的表 都没有经过仔细考虑 随着数据的越来越多 我们需要考虑的更多 好让现在的WHERE子句简
  • Linux——date

    命令简介 date 根据给定格式显示日期或设置系统日期时间 print or set the system date and time 指令所在路径 bin date 命令语法 date OPTION FORMAT date u utc u
  • python计算机视觉编程(四)图像到图像的映射

    图像到图像的映射 原理 仿射变换 仿射变换是一种二维坐标到二维坐标之间的线性变换 相同平面 它保持了二维图形的 平直性 直线经过变换之后依然是直线 和 平行性 二维图形之间的相对位置关系保持不变 平行线依然是平行线 且直线上点的位置顺序不变
  • VB中Shell和ShellExecute函数的使用方法和区别

    写了一个vb的程序 用来把原来写的几个vb和vc的程序整合起来 就是使用Shell函数 结果发现 vc的程序可以很好的显示 但vb写的却一运行就最小化了 仔细查看了一下以下文章 才发现原来shell函数的默认显示模式是windowstyle

随机推荐

  • java公用包共享_tomcat中设置多项目共享jar;类包

    随着服务器上的tomcat部署的项目越来越多 最近在部署一个新的项目的时候出现内存溢出的错误 Exception in thread main java lang OutOfMemoryError PermGen space at java
  • 对java和面向对象的理解?

    java是一款编程语言 是面向对象很有力的影响代表 面向对象 讲社会 实际生活中所有可见的事务抽象对象 用属性和方法来描述 划分模块化引入到java面向对象 方便后期的重复利用和扩展 解决人类的需求 聪明的设计者 灌入人的思维来解决问题 可
  • OSI七层模型和TCP/IP五层模型

    一 OSI七层模型 七层模型从下往上依次为物理层 数据链路层 网络层 传输层 会话层 表示层 应用层 各层功能如图所示 应用层 与其它计算机进行通讯的一个应用 它是对应应用程序的通信服务的 例如 一个没有通信功能的自处理程序就不能执行通信的
  • python 使用pyinstaller 打包xpinyin 问题

    打包之后 启动错误 提示 mandarin dat 未找到 于是 找到这个文件 于打包好的pin exe放一起 再次运行还是这样 查资料说 修改 pyinstaller 的hook 测试失败 转战修改源代码 增加一个函数如果 默认查找的路径
  • 2021前端开发面试题:面试中该如何与HR谈薪资?

    问题 面试中该如何与HR谈薪资 解析 HR与你谈论薪资经常有如下套路 HR 您期望的薪资是多少 你 25K OK 你已经被HR成功套路 这个时候你的最高价就是25K了 然后HR会顺着这个价往下砍 所以你最终的薪资 般都会低于25K 等你接到
  • JS获取当前网站路径的参数值

    如果要获取当前网站路径的参数值 那么可以通过这个例子来实现 比如获取页面的 id 5 page 4 代码如下
  • es ik 分词插件 词库热加载源码分析

    package org wltea analyzer dic import java io IOException import org apache http client config RequestConfig import org
  • 通过lombok减少重复劳动

    lombok 是什么 lombok是一个java开发工具 能帮助我们减少大量的重复劳动 lombok能帮助我们做什么 lombok提供了大量的注解 只要添加了这些注解 lombok就能自动完成很多代码 举个例子 我们在写java的POJO时
  • 关于三维重建的一些东西-VisualSFM+PMVS +MeshLab= PhotoScan

    三维重建 最近在写毕业论文 研究了下三维重建的一些东西 记录下来 以备留存 另外有其他的问题的朋友可以留言 这篇博文分两个部分 三维重建方法 SFM MVS 开源工具 VisualSFM PMVS Meshlab 三维重建方法主要是SFM和
  • Java中类和对象的区别

    一 类和对象 1 类 类的理解 类是对现实生活中一类具有共同属性和行为的事物的抽象 类是对象的数据类型 类是具有相同属性和行为的一组对象的集合 简单理解 类就是对现实事物的一种描述 类的组成 属性 指事物的特征 例如 手机事物 品牌 价格
  • vite创建vue3项目及使用typescript

    1 vue3项目建议使用vite工具 安装全局的vite 创建项目 npm install g create vite app create vite app vue3 demo cd vue3 vite npm install npm r
  • IBM、甲骨文、CNCF 就谷歌对 Istio 治理的处理提出抗议

    近日来 Istio 商标转让 IBM 抗议谷歌违背承诺未将 Istio 捐献给 CNCF 的事情闹的沸沸扬扬 Google 宣布将 Istio 商标转让给 Open Usage Commons 组织 IBM 声明对 Google 违背承诺未
  • Ubuntu下通过docker安装wechat

    Ubuntu下通过docker安装微信 一 安装docker sudo apt update sudo apt upgrade sudo apt full upgrade 安装证书 sudo apt install apt transpor
  • 前缀、中缀、后缀表达式和二叉树

    概念 前缀表达式 Prefix Notation 是指将运算符写在前面操作数写在后面的不包含括号的表达式 而且为了纪念其发明者波兰数学家Jan Lukasiewicz 所以前缀表达式也叫做 波兰表达式 后缀表达式 Postfix Notat
  • explain查看sql语句执行计划

    explain sql 执行结果字段描述 id select唯一标识 select type select类型 table 表名称 type 连接类型 possible keys 可能的索引选择 key 实际用到的索引 key len 实际
  • ORB_SLAM2运行官方数据集/自己数据集

    官方数据集运行结果 WeChat 20230210194425 可以正常运行 自己数据集运行结果 自己的数据集 主要是用手机摄像头采集的实验室进行了一下简单的运行 可以成功运行 但是由于查看的相关程序的是死循环不能像运行官方数据集那样完整保
  • 1553B通信项目开发笔记(一)协议概述

    最近接了个项目 需要用1553B协议通信 仅作为RT端口进行通信 控制器采用ARM 使用芯片为国产的BU61580芯片 功能和引脚和DDC的61580完全一致 系统组成 MIL STD 1553B时分制指令 响应多路传输数据总线采用半双工传
  • Mybatis学习笔记2-配置文件解析

    在学习笔记1中大概学习了如何创建Mybatis框架的过程 其中有部分是编写核心配置文件 具体内容如下
  • 数据结构-双端队列

    定义 某种意义上 是栈和队列的结合 具体排序原则取决于使用者 实现 双端队列是元素的有序集合任何一端都允许添加移除元素 Deque 创建一个空的双端队列 无需参数 返回一个空的双端队列 addFront item 无返回值 addRear
  • python自动化测试添加日志_Python自动化测试之日志记录

    前言 在任何一个软件开发过程中 日志记录都是一个必须要做的事 记录日志 有助于问题排查 后续的大数据统计也要需要使用日志提供原始数据 Python日志库 logging Python 的日志记录工具 这是Python官方提供的日志记录库 优