专栏文章 如何为你的 Airtest 报告自定义名称

fishfish-yu · 2021年10月21日 · 最后由 fishfish-yu 回复于 2021年10月29日 · 2909 次阅读

此文章来源于项目官方公众号:“AirtestProject”
版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途

1. 前言

在 AirtestIDE 运行脚本之后,点击 查看报告 按钮,生成的报告默认都命名为 log.html

每次重新运行脚本后,再点击 查看报告 ,都会把旧的 Airtest 报告内容覆盖掉。但有些同学需要保存历史版本的 Airtest 报告,并不想每次都覆盖掉,这该如何实现呢?

2. 如何自定义 Airtest 报告名称

为了解决上述问题,我们先来了解下如何自定义 Airtest 报告的名称:

1)使用 simple_report 如何自定义报告名称

simple_report 接口支持我们传入以下 4 个参数:

  • filepath:指定脚本的路径
  • logpath:指定 log 内容的路径
  • logfile:指定 log.txt 文件的路径
  • output:指定 HTML 报告的生成路径,必须以 .html 结尾

其中,output 参数就是我们可以用来自定义 HTML 报告名称的参数,我们可以用它来指定生成报告的完整路径(包含报告名称):

# -*- encoding=utf8 -*-
__author__ = "AirtestProject"

from airtest.core.api import *
from airtest.report.report import simple_report

auto_setup(__file__,logdir=True)

touch(Template(r"tpl1634279221295.png", record_pos=(-0.403, 0.238), resolution=(900, 1600)))

simple_report(__file__,logpath=True,output=r"D:\test\test01\0d86098ed0cd4a54c8c611578a3d71b7\cloud_music.html")

2)使用 LogToHtml 如何自定义报告名称

如果使用 LogToHtml 类来生成报告,细心的同学可能会发现,在实例化类的时候,并没有参数可以让我们自定义生成报告的名称。

但是当我们实例化了 1 个 LogToHtml 对象之后,调用类里面的 report() 函数来生成测试报告时,可以看到该函数的 output_file 参数可以让我们自定义 Airtest 报告的名称:

# -*- encoding=utf8 -*-
__author__ = "AirtestProject"

from airtest.core.api import *
from airtest.report.report import simple_report,LogToHtml

auto_setup(__file__,logdir=True)

touch(Template(r"tpl1634279221295.png", record_pos=(-0.403, 0.238), resolution=(900, 1600)))

r = LogToHtml(script_root=r'D:\test\song.air',log_root=r'D:\test\song.air\log')

r.report(output_file=r'D:\test\test01\0d86098ed0cd4a54c8c611578a3d71b7\cloud_music01.html')

3)命令行生成报告如何自定义报告名称

我们知道生成报告的命令是 airtest report + 脚本路径 ,那这个命令有哪个参数可以让我们自定义报告名称呢?我们可以在终端使用 airtest report -h 来查看该条命令的参数详情:

其中 outfile 参数可以帮我们实现这个需求:

airtest report D:\test\song.air --log_root D:\test\song.air\log --lang zh --outfile D:\test\test01\0d86098ed0cd4a54c8c611578a3d71b7\cloud_music02.html

3. 拓展:重复运行脚本时生成报告如何不覆盖历史报告

那了解了如何自定义报告名称之后,再来看 不覆盖历史报告 这个需求,就简单一些了。

我们可以自定义 html 报告的名称,为一种 不重复的命名规则 即可,比如每次都用当前时间来命名 html 报告;又或者更简单的是,直接在 html 的命名规则里添加递增的数字:

# -*- encoding=utf8 -*-
__author__ = "AirtestProject"

from airtest.core.api import *
from airtest.report.report import simple_report,LogToHtml

auto_setup(__file__,logdir=True)

a = 1
while a < 4:
    print("这里假装执行了一些脚本")

    # 生成报告
    from airtest.report.report import simple_report
    simple_report(__file__,logpath=True,output="log"+str(a)+".html")
    a = a + 1


Airtest 官网https://airtest.netease.com/
Airtest 教程官网https://airtest.doc.io.netease.com/
搭建企业私有云服务https://airlab.163.com/b2b

官方答疑 Q 群:654700783

呀~这么认真都看到这里啦,帮忙点击左下角的爱心,给我点个赞支持一下把,灰常感谢~

共收到 2 条回复 时间 点赞

不局限与游戏测试场景吧。其他 web 自动化测试也可以吧。

可以,记得添加 airtest-selenium 的报告插件就行,如果要生成 web 的 airtest 报告

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册