Skip to content

二、使用命令行生成报告

与运行脚本类似,我们并不一定要在AirtestIDE中生成Airtest报告,还可以使用命令行生成报告,下文我们将详细介绍命令行生成Airtest报告的内容。

1. 使用AirtestIDE命令行生成

使用AirtestIDE生成报告 章节中,我们分别介绍了生成报告和导出报告的命令:

Generating HTML log:

D:\demo\AirtestIDE-win-1.2.12\AirtestIDE\AirtestIDE reporter D:\test\song.air --log_root D:/test/test01\0d86098ed0cd4a54c8c611578a3d71b7 --outfile D:\test\test01\0d86098ed0cd4a54c8c611578a3d71b7\log.html --static_root D:\demo\AirtestIDE-win-1.2.12\AirtestIDE\airtest\report --lang zh --plugin airtest_selenium.report poco.utils.airtest.report

Generating HTML log:

D:\demo\AirtestIDE-win-1.2.12\AirtestIDE\AirtestIDE reporter D:\test\song.air --log_root D:/test/test01\0d86098ed0cd4a54c8c611578a3d71b7 --outfile D:\export\report\song.log\log.html --static_root D:\demo\AirtestIDE-win-1.2.12\AirtestIDE\airtest\report --lang zh --plugin airtest_selenium.report poco.utils.airtest.report --export D:/export/report

即使我们本地没有Python环境,或者没有安装 airtestpoco ,我们也一样能够复制上述的命令行到我们的终端回车运行,最终生成Airtest报告。并且在IDE如果生成报告失败,我们还可以依据该命令行在终端运行的报错,来排查详细的问题。

2. 在本地环境使用命令行生成报告

除此之外,我们还可以在完全脱离AirtestIDE,在本地 部署一个Python环境 来运行脚本、生成报告。

1)命令行生成报告的示例

我们可以使用 airtest report + 脚本路径 这样子的命令来生成Airtest报告,以下是命令行生成报告的示例:

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

> python -m airtest report D:\test\song.air --log_root D:\test\song.air\log --lang zh --outfile D:\test\test01\0d86098ed0cd4a54c8c611578a3d71b7\cloud_music.html

这两个命令行的效果是相同的,我们在生成 song.air 的测试报告,指定到 D:\test\song.air\log 路径下面去找log内容,指定报告语言为中文,指定了报告的完整生成路径为 D:\test\test01\0d86098ed0cd4a54c8c611578a3d71b7\cloud_music.html

2)airtest report 命令的参数介绍

airtest report 命令必须传入的参数是脚本路径,其它可选的参数有:

  • --outfile:指定HTML报告的生成路径,以 .html 结尾
  • --static_root:指定静态资源文件的路径,通常为文件服务器地址
  • --log_root:指定log内容的查找路径
  • --record:指定录屏文件的路径
  • --export:指定报告的导出路径
  • --lang:指定报告的语言,可以是中文或者英文(zh or en)
  • --plugins:指定报告插件(生成poco/airtest-selenium脚本的报告时需要添加)

我们还可以查阅 Airtest-running-air-from-cli 文档来了解这几个参数的详细信息。

3. airtest report命令的注意事项

1)先运行脚本,再生成报告

我们使用 airtest report 命令生成报告的时候,会到默认log路径或者指定的log路径里面去找脚本运行生成的log内容,如果未运行脚本,则log内容为空,则不能生成airtest报告或者只能生成空白的测试报告。

所以我们需要时刻谨记,先运行脚本,再来生成脚本的测试报告,即如果都是在命令行实现的话,我们就需要先执行 airtest run 命令之后,才能执行 airtest report 命令生成测试报告。

2)airtest run 和 airtest report的参数对应关系

这2个命令里面,有几个参数是对应关系:

一个是 airtest run--log 参数和 airtest report--log_root 参数,这俩参数分别表示,运行脚本时指定log的保存路径、生成报告时到 log_root去找log内容,俩个参数是相对应的,运行脚本时将log内容生成到哪里,对应地就要去哪里找log内容来生成报告。

第二个是 airtest run--recording 参数和 airtest report--record 参数,与刚才的log内容类似,我们运行脚本时,指定录屏文件保存在哪里,生成报告时就要去哪个路径里面去查找录屏文件。

3)outfile参数和export参数的区别

airtest report 参数有2个参数我们非常容易混淆,outfileexport

  • outfile :表示报告的生成路径(生成的报告只能在本地查看)
  • export :表示报告的导出路径(导出的报告可以发送给别人查看)

假如我们的 airtest report 命令只包含 outfile 参数,不包含 export 参数,则表示此次生成的报告只能在本地查看,报告里面图片资源或者静态资源的路径是绝对路径;

如果我们的 airtest report 命令只包含 export 参数,不包含 outfile 参数,则表示此次生成的报告为导出报告,可以发送给别人或者部署到服务器上面查看,报告里面的图片资源或者静态资源的路径是相对路径;

如果我们的 airtest report 命令同时包含 outfileexport 参数,则只有 export 参数生效,outfile 参数就失效了。

4)static_root参数详解

每次使用 --export 参数导出报告时,报告文件的目录下都会有一份静态资源文件static,它包含了报告中的css和js等文件。一般来说,除非报告的样式做了某些更新,否则这些静态资源文件都是固定不变的。

clipboard (10)

所以我们可以将这些资源文件部署到静态资源文件服务器上,用例如 https://host:port/static/css/ 的路径来访问它。然后在生成报告时,将这个 部署出来的服务器地址 作为 --static_root的参数传过去,这样报告中会默认去访问这个URL读取静态资源文件,避免导出报告时重复拷贝这些资源文件造成的磁盘空间占用。

airtest report D:/test/report_test.air --log_root C:/Users/xiaoming/log --lang zh --static_root https://host:port  --export E:/log_test/

这样报告会默认去访问--static_root参数传入的服务器地址,在上面读取静态资源文件:

clipboard (13)

可以很好地避免导出报告时 重复拷贝这些资源文件 造成的磁盘空间占用:

clipboard (14)

不过,如果我们给--static_root 传入的本地路径,而不是服务器地址,那么我们在导出报告的时候,报告文件夹里仍然会复制一份static文件:

>airtest report D:\test\song.air --log_root D:/test/test01\0d86098ed0cd4a54c8c611578a3d71b7 --static_root D:\demo\AirtestIDE-win-1.2.12\AirtestIDE\airtest\report --lang zh --export D:\export

[14:30:44][INFO]<airtest.report.report> D:\export\song.log\log.html

image-20211020143547693

5)plugins参数详解

默认报告是airtest的专属报告,对于poco语句、airtest-selenium语句的支持不够完善,因此我们需要用插件的形式来补充支持poco语句和airtest-selenium语句:

在你的报告命令行最末尾添加指令--plugin airtest_selenium.report poco.utils.airtest.report 即可。