Python自动化测试实战系列之WiFi测试二

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 本期介绍用测试中比较重要的log模块

上期介绍了Python的一些基本配置,本期将介绍一下本人认为在编码和测试中很重要的一个点,那就是log。log可以记录我们的所有痕迹,所谓“燕过留痕,风过留声”,log不仅可以记录bug信息,通过log分析还可以知道我们设计的逻辑是否正确。有时候经常会出现一种情况,开发的自己明明是这么想的,执行的时候输出的结果却和我们想象中的不一样,这个时候我们就可以通过log去一步步debug,看看代码是怎么运行的,结果是如何一步步呈现给我们的,从中我们可以找到出现错误的根源,因为有时候并不一定是代码出了问题,可能是我们设计的逻辑出了问题,这时候用IDE的debug方式并不好用。

Python标准库里的logging库是Python 的日志记录工具,这里推荐使用logging模块的主要好处是所有的Python模块都可以参与日志记录,并且有很多功能比较灵活。官方文档参考地址:logging --- Python 的日志记录工具 — Python 3.10.12 文档。可以选择不同版本去查阅。先举个简单例子:

>>>importlogging>>>logging.warning('Watch out!')
WARNING:root:Watchout!

上面例子里就是logging的基础用法,先引入模块,然后根据不同的级别输出log信息。logging记录日志分级别,分别是critical > error > warning > info > debug,一共五个等级,级别越高打印的日志越少,反之亦然,可以参考如下详细说明:

  • debug : 打印全部的日志
  • info : 打印 info, warning, error, critical 级别的日志
  • warning : 打印 warning, error, critical 级别的日志
  • error : 打印 error, critical 级别的日志
  • critical : 打印 critical 级别

比如上面例子里的level是warning级别的日志,当日志等级设置在warning之前时,日志就会打印,默认不设置级别的情况下只打印大于等于warning级别的日志。

logging模块提供两种记录日志的方式,第一种是使用logging提供的模块级别的函数,第二种是使用logging的四大组件。

先看Logging 定义的模块级别函数,通过logging.basicConfig()函数设置日志级别和输出格式,并且需要在开头就设置,在中间设置不起作用。


logging.basicConfig(filename='./log.log',level=logging.DEBUG)

在上面例子中,除了设置level外,还定义了将日志记录到文件,在根目录下会生成一个log.log的文件,里面会记录日志信息。

如果有多个模块,可以在一个模块中import另一个模块用日志来显示另一个模块的信息。简单举例:

a.py模块


importloggingimportblogging.basicConfig(filename='a.log',level=logging.DEBUG)
logging.info('Welcome')
b.run()
logging.info('Done')

b.py模块



importlogginglogging.info('Go')

执行a.py模块会打印相应的日志,在日志文件a.log中会显示信息如下:


INFO:root:WelcomeINFO:root:GoINFO:root:Done

另外可以根据实际需求修改日志显示的格式,比如加入日期时间信息。


importlogginglogging.basicConfig(format='%(asctime)s %(message)s', datefmt='%m/%d/%Y %I:%M:%S')
logging.warning('Warning')

    执行结果:


07/20/202305:51:27Warning

再来说说logging模块的四大组件,日志器Logger,处理器Handler,过滤器Filter,格式器Formatter。

Logger是通过模块级函数logging.getLogger(name)来实例化,创建方法:


logger=logging.getLogger(logger_name)
logger.setLevel=(logging.DEBUG)

推荐加上日志记录的模块名,多次使用相同name调用getLogger方法会返回同一个logger对象,即相同的log会记录多次。

Handler处理器类型有很多种,常用的有StreamHandler,FileHandler。可以用StreamHandler输出日志到控制台,用FileHandler写入日志文件,用setFormatter分别设置合适的格式,并将两个处理器加入logger实例中。


file_handler=logging.FileHandler('./log.log, mode='w')console_handler=logging.StreamHandler()
file_handler.setFormatter(logging.Formatter(fmt='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s',datefmt='%Y-%m-%d %H:%M:%S'))
console_handler.setFormatter(logging.Formatter(fmt='%(asctime)s - %(levelname)s: %(message)s',datefmt='%Y-%m-%d %H:%M:%S'))
logger.addHandler(file_handler)
logger.addHandler(console_handler)

Filter比较少用,引用一下官方解释,感兴趣可以去阅读文档。

Filters 可被 Handlers 和 Loggers 用来实现比按层级提供更复杂的过滤操作。 基本过滤器类只允许低于日志记录器层级结构中低于特定层级的事件。 例如,一个用 'A.B' 初始化的过滤器将允许 'A.B', 'A.B.C', 'A.B.C.D', 'A.B.D' 等日志记录器所记录的事件。 但 'A.BB', 'B.A.B' 等则不允许。 如果用空字符串初始化,则所有事件都会通过。

https://docs.python.org/zh-cn/3.10/library/logging.html#filter-objects

Formatter可以让我们自己定义日志信息的输出规则,结构和内容,可以结合实际情况来设置,一般日期,模块名之类的都推荐加进来,这样便于查看日志时了解事件发生的时间和地点。

四个组件之间都是相互关联的,可以简单的理解一下,logger是建立一个接口,handler用来干实事儿,filter和formatter来制定一些规则。从上面的例子还可以看出,logger可以包含多个handler,日志级别可以分开设置并继承,比如对于记录到log文件的日志,我们级别可以设置为debug,把全部日志都记录下来,但是对于输出到控制器的日志,只需要输出info级别的就可以了,这样可以大大减少平时不需要的一些日志信息。

到这里logging模块对我们来说已经够用了,还有一些日志配置相关的内容基本上可以不用关注,本期结束!

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
30天前
|
人工智能 搜索推荐 数据管理
探索软件测试中的自动化测试框架选择与优化策略
本文深入探讨了在现代软件开发流程中,如何根据项目特性、团队技能和长期维护需求,精准选择合适的自动化测试框架。
97 8
|
1月前
|
搜索推荐 Python
使用Python自动化生成物业通知单
本文介绍如何使用Python结合Pandas和python-docx库自动化生成物业通知单。通过读取Excel数据并填充至Word模板,实现高效准确的通知单批量制作。包括环境准备、代码解析及效果展示,适用于物业管理场景。
64 14
|
1月前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
122 10
|
1月前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
1月前
|
机器学习/深度学习 人工智能 监控
软件测试中的自动化测试策略与最佳实践##
在当今快速发展的软件行业中,自动化测试已成为确保软件质量和加速产品上市的关键工具。本文将探讨自动化测试的重要性,分析不同类型的自动化测试工具和框架,并深入讨论实施自动化测试的最佳实践。通过案例研究和数据分析,我们将揭示如何有效整合自动化测试到软件开发生命周期中,以及它如何帮助团队提高测试效率和覆盖率。 ##
62 1
|
11天前
|
Python
自动化微信朋友圈:Python脚本实现自动发布动态
本文介绍如何使用Python脚本自动化发布微信朋友圈动态,节省手动输入的时间。主要依赖`pyautogui`、`time`、`pyperclip`等库,通过模拟鼠标和键盘操作实现自动发布。代码涵盖打开微信、定位朋友圈、准备输入框、模拟打字等功能。虽然该方法能提高效率,但需注意可能违反微信使用条款,存在风险。定期更新脚本以适应微信界面变化也很重要。
117 60
|
17天前
|
IDE 测试技术 开发工具
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
在Python开发中,调试是提升效率的关键技能。本文总结了10个实用的调试方法,涵盖内置调试器pdb、breakpoint()函数、断言机制、logging模块、列表推导式优化、IPython调试、警告机制、IDE调试工具、inspect模块和单元测试框架的应用。通过这些技巧,开发者可以更高效地定位和解决问题,提高代码质量。
129 8
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
|
3天前
|
存储 安全 数据可视化
用Python实现简单的任务自动化
本文介绍如何使用Python实现任务自动化,提高效率和准确性。通过三个实用案例展示:1. 使用`smtplib`和`schedule`库自动发送邮件提醒;2. 利用`shutil`和`os`库自动备份文件;3. 借助`requests`库自动下载网页内容。每个案例包含详细代码和解释,并附带注意事项。掌握这些技能有助于个人和企业优化流程、节约成本。
28 3
|
23天前
|
JSON 数据可视化 测试技术
python+requests接口自动化框架的实现
通过以上步骤,我们构建了一个基本的Python+Requests接口自动化测试框架。这个框架具有良好的扩展性,可以根据实际需求进行功能扩展和优化。它不仅能提高测试效率,还能保证接口的稳定性和可靠性,为软件质量提供有力保障。
54 7
|
1月前
|
小程序 开发者 Python
探索Python编程:从基础到实战
本文将引导你走进Python编程的世界,从基础语法开始,逐步深入到实战项目。我们将一起探讨如何在编程中发挥创意,解决问题,并分享一些实用的技巧和心得。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你提供有价值的参考。让我们一起开启Python编程的探索之旅吧!
49 10
下一篇
开通oss服务