二、使用命令行生成报告
与运行脚本类似,我们并不一定要在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环境,或者没有安装 airtest
与 poco
,我们也一样能够复制上述的命令行到我们的终端回车运行,最终生成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个参数我们非常容易混淆,outfile
和 export
:
outfile
:表示报告的生成路径(生成的报告只能在本地查看)export
:表示报告的导出路径(导出的报告可以发送给别人查看)
假如我们的 airtest report
命令只包含 outfile
参数,不包含 export
参数,则表示此次生成的报告只能在本地查看,报告里面图片资源或者静态资源的路径是绝对路径;
如果我们的 airtest report
命令只包含 export
参数,不包含 outfile
参数,则表示此次生成的报告为导出报告,可以发送给别人或者部署到服务器上面查看,报告里面的图片资源或者静态资源的路径是相对路径;
如果我们的 airtest report
命令同时包含 outfile
和 export
参数,则只有 export
参数生效,outfile
参数就失效了。
4)static_root参数详解
每次使用 --export
参数导出报告时,报告文件的目录下都会有一份静态资源文件static
,它包含了报告中的css和js等文件。一般来说,除非报告的样式做了某些更新,否则这些静态资源文件都是固定不变的。
所以我们可以将这些资源文件部署到静态资源文件服务器上,用例如 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
参数传入的服务器地址,在上面读取静态资源文件:
可以很好地避免导出报告时 重复拷贝这些资源文件 造成的磁盘空间占用:
不过,如果我们给--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
5)plugins参数详解
默认报告是airtest的专属报告,对于poco语句、airtest-selenium语句的支持不够完善,因此我们需要用插件的形式来补充支持poco语句和airtest-selenium语句:
在你的报告命令行最末尾添加指令--plugin airtest_selenium.report poco.utils.airtest.report
即可。