三、Airtest报告指南¶
1. 前言¶
通过阅读本小节教程,你将了解以下内容:
- 报告页面介绍
- 自定义报告信息
(本文内容基于IDE1.2.12或Airtest1.2.3)
2. 报告页面介绍¶
1)Airtest报告的头部信息¶
Airtest报告的头部信息包含:运行结果、运行时间、执行步骤数、log.txt文件、脚本作者、脚本名称、脚本描述等信息。
2)Airtest报告的步骤执行详情¶
报告的头部信息往下,详细展示了每一个测试动作及其执行情况:
我们可以通过单击左侧的步骤信息,来查看步骤的执行详情;也可以通过右侧的快捷键,快速跳转到错误步骤,或者筛选出失败、成功或者断言步骤;或者我们还可以通过单击快览上面的某张图片,来跳转到该快览所在的具体步骤的执行详情。
3. 报告信息的显示与自定义¶
1)自定义脚本作者信息¶
在脚本开头使用 __author__
,即可自定义脚本的作者信息:
__author__ = "AirtestProject"
Airtest报告显示如下:
2)自定义报告标题¶
在脚本开头使用 __title__
,即可自定义报告的标题:
__title__ = "大鱼脚本"
Airtest报告显示如下:
3)自定义脚本的描述信息¶
在脚本开头使用 __desc__
,即可自定义脚本的描述信息;如果脚本描述过长,超过一定行数将会自动折叠:
__desc__ = """
大鱼来了 5分钟脚本
测试点1
测试点2
测试点3
"""
Airtest报告显示如下:
4)自定义步骤名称¶
目前我们仅支持自定义断言步骤的名称和使用log接口添加1个自定义的步骤名称
① 自定义断言步骤的名称¶
assert_equal("1", "1", "这是1个断言")
Airtest报告显示如下:
② 使用log自定义步骤名称¶
log("这是1条log")
Airtest报告显示如下:
另外我们补充下,在脚本中记录log的 log()
接口,支持以下4个参数:
args
, 可以是字符串或是traceback
对象,现在还支持传入非字符串,并且对py2做了一下兼容。假如传入的是traceback
对象,将会自动在报告中标记为报错步骤,否则就是显示正常的log
内容。timestamp
, 参数可以自定义当前这条log
的时间戳,默认为当前时间(在记录一些长时间的回调中获取到的log
时,原本默认使用写入本条log
的时间,但是可能需要修改为log
产生的时间,比如几分钟前)desc
, 自定义一个 log 标题,在报告中有更好的展示效果snapshot
, 是否需要截取一张当前的屏幕图像并显示到报告中,方便查看。(同时,因为这个参数的加入,现在airtest脚本如果因为执行Poco语句失败报错而终止时,能够额外截取一张当前画面,方便大家排查问题。)
示例:
data = {"test": 123, "time": 123456}
# 第一条log,步骤名显示title,截取一张屏幕截图
log(data, timestamp=time.time(), desc="title", snapshot=True)
# 第二条log,标记为报错步骤并截取一张屏幕截图
try:
1/0
except Exception as e:
log(e, snapshot=True)
# 第三条log,显示传入的字符串
log("中文")
5)自定义全局/单张截图的压缩精度¶
我们可以用如下形式自定义截图压缩精度:
① 使用命令行,airtest run ... --compress quality
,quality
取值1-99,数值越高,截图越清晰
② 在脚本中自定义,优先级高于命令行,取值范围是1-99的正整数,airtest默认取10,如果希望获得更高精度的图片可以改为75、90等
import airtest.core.api import *
ST.SNAPSHOT_QUALITY = xxx # [1, 99]
# 在报告的该touch步骤中,保存的截图的精度为全局精度xxx
touch(xx)
# snapshot保存的截图精度也是全局精度xxx
snapshot()
③ 设置某张图片的压缩精度
snapshot(quality=my_quality)
6)自定义报告截图的最大尺寸¶
我们可以使用 ST.IMAGE_MAXSIZE
来指定截图的最大尺寸;假如设置为1200,则最后保存的截图长宽都不会超过1200,有利于进一步缩小截图的图片尺寸。
# 设置截图尺寸不超过600*600,如果不设置,默认为原图尺寸
ST.IMAGE_MAXSIZE = 600
# 在报告的该touch步骤中,保存的截图尺寸不超过600*600
touch(xx)
# 截图质量为90,尺寸不超过1200*1200
snapshot(filename="test2.png", msg="test02", quality=90, max_size=1200)
# 不设置的情况下,默认采用ST中的全局变量的数值,即600*600
snapshot(msg="test12")
7)设置关闭截图¶
如需在脚本中设置是否保存截图,我们可以使用 settings 的一个配置 ST.SAVE_IMAGE
,它的默认值为 True
, 如果改为 False
,就不保存截图,直到这个值再次设为 True
,示例:
from airtest.core.api import *
# 暂时关闭截图
ST.SAVE_IMAGE = False
touch((100, 100)) # 这条语句将不会保存当前画面图片
# 继续截图
ST.SAVE_IMAGE = True
touch((100, 100))
(未保存截图的touch)
(保存截图的touch)
4. 拓展:单独获取脚本的详细信息¶
如果我们想单独获取到脚本的名称、存放路径、作者、标题、脚本描述等信息,我们可以使用命令行:airtest info + 脚本路径
,
可以获得airtest解析出来的脚本信息,类似这样的返回值:
>airtest info untitled.air
{"name": "untitled.air", "path": "untitled.air", "author": "user", "title": "脚本标题", "desc": "用例描述"}