三、Airtest报告指南

1. 前言

通过阅读本小节教程,你将了解以下内容:

  • 报告页面介绍
  • 自定义报告信息

(本文内容基于IDE1.2.12或Airtest1.2.3)

2. 报告页面介绍

1)Airtest报告的头部信息

image-20211020155401966

Airtest报告的头部信息包含:运行结果、运行时间、执行步骤数、log.txt文件、脚本作者、脚本名称、脚本描述等信息。

2)Airtest报告的步骤执行详情

报告的头部信息往下,详细展示了每一个测试动作及其执行情况:

report_content

我们可以通过单击左侧的步骤信息,来查看步骤的执行详情;也可以通过右侧的快捷键,快速跳转到错误步骤,或者筛选出失败、成功或者断言步骤;或者我们还可以通过单击快览上面的某张图片,来跳转到该快览所在的具体步骤的执行详情。

3. 报告信息的显示与自定义

1)自定义脚本作者信息

在脚本开头使用 __author__,即可自定义脚本的作者信息:

  1. __author__ = "AirtestProject"

Airtest报告显示如下:

image-20211020164821704

2)自定义报告标题

在脚本开头使用 __title__ ,即可自定义报告的标题:

  1. __title__ = "大鱼脚本"

Airtest报告显示如下:

image-20211020165106188

3)自定义脚本的描述信息

在脚本开头使用 __desc__,即可自定义脚本的描述信息;如果脚本描述过长,超过一定行数将会自动折叠:

  1. __desc__ = """
  2. 大鱼来了 5分钟脚本
  3. 测试点1
  4. 测试点2
  5. 测试点3
  6. """

Airtest报告显示如下:

image-20211020165400835

4)自定义步骤名称

目前我们仅支持自定义断言步骤的名称和使用log接口添加1个自定义的步骤名称

① 自定义断言步骤的名称
  1. assert_equal("1", "1", "这是1个断言")

Airtest报告显示如下:

image-20211020170333706

② 使用log自定义步骤名称
  1. log("这是1条log")

Airtest报告显示如下:

image-20211020170520922

另外我们补充下,在脚本中记录log的 log() 接口,支持以下4个参数:

  • args, 可以是字符串或是 traceback 对象,现在还支持传入非字符串,并且对py2做了一下兼容。假如传入的是 traceback 对象,将会自动在报告中标记为报错步骤,否则就是显示正常的 log 内容。
  • timestamp, 参数可以自定义当前这条 log 的时间戳,默认为当前时间(在记录一些长时间的回调中获取到的 log 时,原本默认使用写入本条 log 的时间,但是可能需要修改为 log 产生的时间,比如几分钟前)
  • desc , 自定义一个 log 标题,在报告中有更好的展示效果
  • snapshot, 是否需要截取一张当前的屏幕图像并显示到报告中,方便查看。(同时,因为这个参数的加入,现在airtest脚本如果因为执行Poco语句失败报错而终止时,能够额外截取一张当前画面,方便大家排查问题。)

示例:

  1. data = {"test": 123, "time": 123456}
  2. # 第一条log,步骤名显示title,截取一张屏幕截图
  3. log(data, timestamp=time.time(), desc="title", snapshot=True)
  4. # 第二条log,标记为报错步骤并截取一张屏幕截图
  5. try:
  6. 1/0
  7. except Exception as e:
  8. log(e, snapshot=True)
  9. # 第三条log,显示传入的字符串
  10. log("中文")

image

5)自定义全局/单张截图的压缩精度

我们可以用如下形式自定义截图压缩精度:

① 使用命令行,airtest run ... --compress qualityquality 取值1-99,数值越高,截图越清晰

② 在脚本中自定义,优先级高于命令行,取值范围是1-99的正整数,airtest默认取10,如果希望获得更高精度的图片可以改为75、90等

  1. import airtest.core.api import *
  2. ST.SNAPSHOT_QUALITY = xxx # [1, 99]
  3. # 在报告的该touch步骤中,保存的截图的精度为全局精度xxx
  4. touch(xx)
  5. # snapshot保存的截图精度也是全局精度xxx
  6. snapshot()

③ 设置某张图片的压缩精度

  1. snapshot(quality=my_quality)

6)自定义报告截图的最大尺寸

我们可以使用 ST.IMAGE_MAXSIZE 来指定截图的最大尺寸;假如设置为1200,则最后保存的截图长宽都不会超过1200,有利于进一步缩小截图的图片尺寸。

  1. # 设置截图尺寸不超过600*600,如果不设置,默认为原图尺寸
  2. ST.IMAGE_MAXSIZE = 600
  3. # 在报告的该touch步骤中,保存的截图尺寸不超过600*600
  4. touch(xx)
  5. # 截图质量为90,尺寸不超过1200*1200
  6. snapshot(filename="test2.png", msg="test02", quality=90, max_size=1200)
  7. # 不设置的情况下,默认采用ST中的全局变量的数值,即600*600
  8. snapshot(msg="test12")

7)设置关闭截图

如需在脚本中设置是否保存截图,我们可以使用 settings 的一个配置 ST.SAVE_IMAGE ,它的默认值为 True , 如果改为 False ,就不保存截图,直到这个值再次设为 True ,示例:

  1. from airtest.core.api import *
  2. # 暂时关闭截图
  3. ST.SAVE_IMAGE = False
  4. touch((100, 100)) # 这条语句将不会保存当前画面图片
  5. # 继续截图
  6. ST.SAVE_IMAGE = True
  7. touch((100, 100))

image (未保存截图的touch)

image (保存截图的touch)

4. 拓展:单独获取脚本的详细信息

如果我们想单独获取到脚本的名称、存放路径、作者、标题、脚本描述等信息,我们可以使用命令行:airtest info + 脚本路径, 可以获得airtest解析出来的脚本信息,类似这样的返回值:

  1. >airtest info untitled.air
  2. {"name": "untitled.air", "path": "untitled.air", "author": "user", "title": "脚本标题", "desc": "用例描述"}