用命令行运行脚本并生成报告

简介: 用命令行运行脚本并生成报告

前言



本文将详细介绍如何使用命令行运行脚本、生成报告以及读取报告中的静态资源文件和图片文件


要用命令行来完成以上的任务,我们就需要用到本地的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参数传入的服务器地址上,读取静态资源文件,避免导出报告时重复拷贝这些资源文件造成的磁盘空间占用。


相关文章
|
1月前
|
Shell Linux 网络安全
性能工具之 JMeter 使用 shell 脚本快速执行
【2月更文挑战第30天】性能工具之 JMeter 使用 shell 脚本快速执行
103 1
性能工具之 JMeter 使用 shell 脚本快速执行
|
7月前
|
Shell
用shell脚本编写一个日常巡检机器脚本
用shell脚本编写一个日常巡检机器脚本
88 2
|
9月前
|
Windows
07-Jmeter命令行运行脚本
07-Jmeter命令行运行脚本
|
11月前
|
Shell Linux 开发工具
在 Shell 脚本中跟踪调试命令的执行
在 Shell 脚本中跟踪调试命令的执行
129 0
|
测试技术
loadrunner 运行脚本-命令行运行脚本
loadrunner 运行脚本-命令行运行脚本
85 0
|
测试技术
loadrunner 运行场景-命令行运行场景
loadrunner 运行场景-命令行运行场景
107 0
|
关系型数据库 Shell