如何给Airtest脚本/报告增加log记录

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 如何给Airtest脚本/报告增加log记录

1. 前言



尽管Airtest脚本运行过程中会输出非常丰富的log信息,并且Airtest报告也会把我们脚本的的运行步骤显示出来,但有时候,我们会需要在脚本里面,插入一些自定义的log内容(比如某些关键点),并且显示在Airtest报告中。


这里就要用到Airtest提供的 log() 接口了。


2. log接口的用法



我们建议大家使用最新版本的Airtest来体验这个 log() 接口,该接口支持传入字符串、非字符串和 traceback 对象:


1)记录一条简单的log


我们可以给 log() 接口传入1个字符串,来非常便捷接插入一条简单的log记录:


log("插入一条log记录")
复制代码


运行后,我们不仅可以在log查看窗的log日志中看到我们插入的log记录:


[16:02:07][INFO]<airtest.core.api> 插入一条log记录
复制代码


还可以在生成的Airtest报告中查看到这条log记录:


网络异常,图片无法展示
|


2)记录一条报错log


如果我们给log接口传入的是 traceback 对象,将会自动在报告中标记为报错步骤:


try:
    1/0
except Exception as e:
    log(e)
复制代码


运行后,我们可以在log日志中看到1条报错的log:


[16:13:55][ERROR]<airtest.core.api> Traceback (most recent call last):
  File "D:\demo\test02.air\test02.py", line 10, in <module>
    1/0
ZeroDivisionError: division by zero
复制代码


Airtest报告也会显示这个 traceback 的log,并且标记为错误步骤:


网络异常,图片无法展示
|


3)记录一条非字符串的log


上述2种log,已经可以满足我们大部分的log需求了,但是有时候,我们可能会有一些复杂log记录需求,比如 dictlist 这些,所以Airtest的 log() 接口也有支持传入非字符串的内容:


data = {"test": 123, "time": 123456}
log(data,desc="记录1条复杂的log")
复制代码


在log日志中也会显示成一条 [info] 日志:


[16:22:27][INFO]<airtest.core.api> {'test': 123, 'time': 123456}
复制代码


同时,Airtest报告也能看到这条复杂log的标题和详细内容:


网络异常,图片无法展示
|


4)自定义当前log的时间戳


另外, log 接口还支持非常丰富的参数,比如自定义时间戳 timestamp


# 该条log的时间被定义为当前时间
log("自定义log的时间戳", timestamp=time.time())
# 该条log的时间被定义为5秒之前
t1 = time.time()
time.sleep(5)
log("自定义log的时间戳", timestamp=t1)
复制代码


5)自定义当前log的标题


如果是插入1条简单的字符串log,默认会取该字符串作为log的标题显示在报告步骤上;但我们也可以通过 desc 参数,来自定义一些复杂log的标题,像示例3)那样,就有自定义log的标题。


当然,这对传入普通字符串的log也是同样适用的:


log("123",desc="这是1条log")
复制代码


网络异常,图片无法展示
|


6)给当前log截取屏幕图像


有一些情况下,插入一些关键的log还不足以让我们去看到更多的信息,所以我们支持在保存log的同时,截取当前的屏幕画面,去获取更多的测试信息:


log("截图log",snapshot=True)
复制代码


网络异常,图片无法展示
|


3. 拓展-如何过滤大量的log日志



那其实在Airtest的log日志这块,同学们除了希望自定义log之外,还有一点是希望过滤掉一些不关注的log信息,比如,大部分同学可能只关注跑测过程的报错信息,而我们的Airtest脚本跑测过程,会输出大量的log信息:


网络异常,图片无法展示
|


但其实我们更关注报错信息,类似:


网络异常,图片无法展示
|


这个时候可以通过下述方式,来帮助我们过滤掉一些我们不关注的信息:


# -*- encoding=utf8 -*-
__author__ = "user"
import logging
logger = logging.getLogger("airtest")
logger.setLevel(logging.ERROR)
from airtest.core.api import *
auto_setup(__file__)
复制代码


这样只有在运行脚本的开头,会输出少量的log信息,后续都是同学们最关注的的ERROR信息了:


网络异常,图片无法展示
|


4. 小结



那今天我们介绍了增加自定义log的接口,以及如何过滤Airtest大量log里面我们不关注的部分,后续我们还会持续跟大家分享下,如何把log内容保存在文件中。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
7月前
|
Linux Shell
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
328 1
|
2月前
|
Java Shell
「sh脚步模版自取」测试线排查的三个脚本:启动、停止、重启、日志保存
「sh脚步模版自取」测试线排查的三个脚本:启动、停止、重启、日志保存
43 1
|
23天前
|
监控 数据挖掘 数据安全/隐私保护
Python脚本:自动化下载视频的日志记录
Python脚本:自动化下载视频的日志记录
|
3月前
|
缓存 监控 算法
分析慢日志文件来优化 PHP 脚本的性能
分析慢日志文件来优化 PHP 脚本的性能
|
4月前
|
Java Shell Linux
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志
关于如何使用Shell脚本来解析Linux系统中的应用服务日志,提供了脚本实现的详细步骤和技巧,以及一些Shell编程的技能扩展。
66 0
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志
|
4月前
|
运维 监控 Ubuntu
一键启动日志魔法:揭秘ELK自动安装脚本的神秘面纱!
【8月更文挑战第9天】在数据驱动时代,高效处理日志至关重要。ELK Stack(Elasticsearch、Logstash、Kibana)是强大的日志分析工具,但其复杂的安装配置常让初学者望而却步。本文介绍如何编写ELK自动安装脚本,简化部署流程。脚本适用于Ubuntu系统,自动完成ELK下载、安装及基本配置,包括依赖项安装、服务启动及自启设置,极大降低了使用门槛,助力运维人员和开发者轻松构建日志分析平台。
169 6
|
4月前
|
运维 监控 数据可视化
自动化运维:使用Python脚本进行日志分析
【8月更文挑战第31天】当系统出现问题时,我们通常会查看日志寻找线索。然而,手动阅读大量日志既费时又易出错。本文将介绍如何使用Python脚本自动分析日志,快速定位问题,提高运维效率。我们将从简单的日志读取开始,逐步深入到复杂的正则表达式匹配和错误统计,最后实现一个自动化的日志监控系统。无论你是新手还是老手,这篇文章都将为你提供有价值的参考。让我们一起探索如何用代码解放双手,让运维工作变得更加轻松吧!
|
5月前
|
Shell 测试技术 Linux
Shell 脚本循环遍历日志文件中的值进行求和并计算平均值,最大值和最小值
Shell 脚本循环遍历日志文件中的值进行求和并计算平均值,最大值和最小值
72 3
|
4月前
|
存储 监控 Ubuntu
一键搞定:用脚本轻松部署ELK,让日志分析变得简单又高效
【8月更文挑战第13天】ELK栈由Elasticsearch、Logstash和Kibana组成,用于日志存储、解析及展示,是大数据领域广泛采用的日志解决方案。鉴于其安装配置复杂,本文提供了一个适用于Ubuntu 16.04的ELK自动安装Shell脚本示例。脚本首先确保Java环境安装,接着添加Elastic.co的APT仓库并安装ELK组件,最后启动所有服务。通过自动化流程,简化部署工作,减少人为错误,提升效率。实际应用中还需根据具体需求调整配置和服务设置。
92 0
|
6月前
|
Shell Linux
linux shell 脚本实现:根据文件内容中的每行分隔符放入数组,根据规则打印日志并重新创建目录 备份文件
linux shell 脚本实现:根据文件内容中的每行分隔符放入数组,根据规则打印日志并重新创建目录 备份文件
54 0