AirtestProject 用命令行运行 Airtest 脚本并生成报告的常见问题
前言
本文将详细介绍如何使用命令行运行脚本、生成报告以及读取报告中的静态资源文件和图片文件。
要用命令行来完成以上的任务,我们就需要用到本地的 python 环境。所以我们必须保证本地的 python 环境安装了airtest
,否则在执行以上任务时,就会出现 airtest distribution was not found
的错误:
我们可以使用pip list
命令来查看当前环境是否安装了airtest
:
如果当前环境没有安装airtest
,就使用 pip install airtest
命令,然后等待安装完成即可。
使用命令行运行脚本
脚本的运行过程,与报告的生成过程是独立的两个步骤,所以我们可以先用airtest run + 脚本文件路径
指令来运行脚本,该命令的可传参数如下:
-
--device
,用来指定连接的被测设备 -
--log
,用来指定 log 内容和截图存放的目录 -
--recording
,运行脚本时进行录屏操作
下面分别介绍下这几个参数的使用方法:
--device
在脚本运行的时候,我们必须连接上一个被测设备。如果在我们脚本的airtest
语句之前,没有对设备进行初始化,比如没有运行一个connect_device
的语句之类的,在使用airtest run
指令来运行脚本时,就必须传入--device
参数,否则命令行会报如下错误:
传入--device
参数即可解决上述问题:
# 用airtest运行了report_test.air这个脚本
# airtest run 后面接的是脚本文件的路径
# device参数后面可跟Android、iOS和Windows设备
airtest run D:/test/report_test.air --device Android:///
--log
如果 airtest run
指令没有传入参数--log
,那使用命令行运行脚本时,将不保存 log 内容和截图,并且命令行会提示do not save log
:
如果传入的参数为--log log/
, 将把生成的 log 内容放到当前命令行执行目录下的 log 目录里面:
如果在--log
参数里传入了指定目录,log 内容与截图将会放在指定目录里,如图:
--recording
需要在脚本运行时进行录屏操作,则在使用airtest run
命令时传入--recording
参数即可,录制的视频文件会以 MP4 格式保存在 log 内容所在的目录里面。
airtest run D:/test/report_test.air --device Android:/// --log log/ --recording
使用命令行生成报告
在命令行中,使用airtest run
指令运行脚本以后,我们就可以使用airtest report + 脚本文件路径
指令来生成一份 HTML 格式的报告。
该命令也有非常多的可传参数,例如:
-
--log_root
,指定 log 内容和截图文件所在的目录 -
--outfile
,指定生成报告的目录 -
--lang
,指定报告语言,可以是中文/英文 -
--export
,导出一个包含所有资源的报告文件 -
--static_root
,指定静态资源文件的路径
需要注意的是,使用 airtest report
指令但没有传入任何参数时,程序会默认去脚本文件所在目录下寻找log/log.txt
,然后用找到的内容来生成 HTML 格式的报告,该报告存放于当前命令行的执行目录下。如果脚本目录里面不存在log/log.txt
,命令行则会报错:
所以不传入任何参数来使用airtest report
指令时,需要保证运行时产生的 log 内容的文件夹必须与脚本文件在同一文件夹内:
--log_root
一些情况下,我们运行脚本时并没有把 log 内容和截图文件存放在与脚本文件相同的目录下,这时可以用--log_root
参数来指定 log 内容和截图文件所在的目录。假如 log 内容保存在当前执行目录下的 log 文件夹里,我们就可以这样指定:
C:\Users\xiaoming>airtest report D:/test/report_test.air --log_root C:/Users/xiaoming/log
log.html
# 命令行显示的log.html表示在当前执行目录下生成了报告log.html
--outfile
当我们不想报告保存到当前执行目录下时,我们就可以用--outfile
参数来指定报告生成的目录:
airtest report D:/test/report_test.air --log_root C:/Users/wb.yuxiaojuan/log --outfile E:/log_test/log.html
--lang
- 指定报告语言为中文:
--lang zh
- 指定报告语言为英文:
--lang en
注意:如果不指定报告的语言,默认的报告语言为英文。
读取报告中静态资源文件和图片文件
-- export
不传入-- export
参数的情况下使用 airtest report
指令,在生成的报告中使用了绝对路径来访问里面的图片文件;同时 HTML 报告中访问的静态 css 与 js 资源文件,也是硬盘上的绝对路径(默认在airtest
的安装目录下的report
文件夹里)。
因此,直接把 HTML 格式的报告发送给别人观看,别人是没办法正常观看的。这时我们可以传入 airtest report
指令的--export
参数,将报告导出到一个指定目录中,然后将整个目录发送给别人观看(该目录会包含报告的静态资源文件和图片文件)。
# 使用了export参数,outfile参数会失效,所以使用了export参数就不要使用outfile
airtest report D:/test/report_test.air --log_root C:/Users/wb.yuxiaojuan/log --lang zh --export E:/log_test/
导出报告的页面中会使用相对路径访问图片和资源文件:
因此,如果要将报告部署到服务器上供其他人查看,同样需要使用 --export
参数来导出报告,这样可以使图片路径为相对路径。
--static_root
每次导出报告时,目录下都会有一份静态资源文件static
,它包含了报告中的 css 和 js 等文件。一般来说,除非报告的样式做了某些更新,否则这些静态资源文件都是固定不变的。
所以我们可以将这些资源文件部署到静态资源文件服务器上,用例如 https://host:port/static/css/ 的路径来访问它。然后在生成报告时,将这个部署出来的服务器地址作为 --static_root
的参数传过去:
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
参数传入的服务器地址上,读取静态资源文件,避免导出报告时重复拷贝这些资源文件造成的磁盘空间占用。
如想向我们反馈关于 AirtestProject 想了解的问题,欢迎到公众号后台留言。