前言
通过阅读本小节教程,你将了解以下内容:
- 新版报告页面内容
- 自定义部分报告信息
- 如何生成报告
新版报告页面
报告主要分为两部分:
①在报告的上半部分,可以看到与报告相关的一些信息,比如:报告的名称、作者、报告描述等等。
②报告的下半部分,展示了每一个测试动作及其执行情况。单击左侧的测试动作,右侧会显示出相应动作执行结果的详细情况。并且我们还可以在右侧对不同执行结果进行筛选。
自定义部分报告信息
如果在脚本中写到了以下的内容,将会在报告中显示出来:
- __author__
对应脚本作者
- __title__
对应脚本标题
- __desc__
可以写较长的脚本描述,将会显示到页面中,如果超过一定行数将会自动折叠
如果想单独获取到脚本里填写的这些对应信息,可以使用命令行:airtest info 脚本路径
,
可以获得airtest解析出来的脚本信息,类似这样的返回值:
>airtest info untitled.air
{"name": "untitled.air", "path": "untitled.air", "author": "user", "title": "脚本标题", "desc": "用例描述"}
如何生成报告
在IDE里点击生成报告按钮来生成报告
在运行脚本后,可以立即在log窗口中看到当前脚本执行成功还是失败,然而不能够看到更加详细直观的执行结果。在AirtestIDE中,可以点击上侧图标菜单的最后那个“查看报告”的按钮,快捷键为Ctrl+L
,稍后片刻将会自动使用默认浏览器打开结果报告页面:
另外,我们可以在AirtestIDE上右键点击脚本标题,选择“打开报告”,来打开log所在的文件夹。
使用命令行来生成报告
我们的脚本运行过程,与报告生成过程是独立的两个步骤,所以我们可以先用airtest run 指令来运行脚本:
```
# 用airtest运行了untitled.air这个脚本
# airtest run 后面接的是脚本文件的路径
airtest run untitled.air
`` 值得注意的是,如果airtest run 指令没有指定
--log log/, 将把生成的log内容放到当前命令行的执行目录里;如果指定了
--log` 参数,log内容与截图将会放在指定目录里。
然后,我们可以运行 airtest report 指令来生成一份HTML格式的报告:
# 最简单的命令行,log文件与脚本文件在同一文件夹里
# 运行以下指令,在当前目录生成一个log.html
>airtest report untitled.air
log.html
airtest report
必须传入的参数就是我们的运行脚本,其他支持的可选参数比较多,具体可以查阅 Airtest_generate-html-report ,这里给出一个最常见的命令行范例:
>airtest report untitled.air --log_root log/ --outfile log/log.html --lang zh
上述代码中:
--log_root log/
表示用当前目录下,log/目录里面的log内容来生成了一个html报告;
--outfile log/log.html
表示将这个html报告放在log目录下,命名为log.html;
--lang zh
表示指定显示语言为中文。
由于有时我们需要将报告拷贝到另外一个目录,或者是打包发给别人查看,但是直接生成的报告是无法复制到别的目录下查看的。原因是,直接生成的报告,所有的图片、静态资源文件都用了绝对路径,所以不能直接复制到别的电脑上查看,但是自己的电脑复制到别的目录,是可以看的。所以我们提供了一个导出模式,在刚才的report指令后面添加一个参数 --export
导出目录路径,即可将报告完整导出到一个文件夹中,方便查看。
另外,我们可以 直接复制AirtestIDE里运行脚本时显示在log窗里的指令来运行 ,因此在生成报告时同样也可以这样做:先点击AirtestIDE里的生成报告按钮,等log窗口中出现了生成报告的命令行之后,复制它到你的命令行窗口中,就可以自由运行了。(需要注意的是,如果复制到命令行窗口的指令中包含路径的话,需要将指令里面所有的路径单独用英文模式下的双引号括起来,否则会导致命令行执行报错)
报告中的静态资源文件和图片文件的读取
在使用 airtest report
指令生成的报告中,使用了绝对路径来访问里面的图片文件,同时HTML报告中访问的静态css与js资源文件,也是硬盘上的绝对路径(默认在airtest的安装目录下的report文件夹里)。因此,假如想要发送报告给其他人观看,就必须要在命令行末尾加上 --export 导出目录
,将报告导出到一个指定目录中,然后将整个目录发送给别人观看。
静态文件路径读取路径对比:
- 默认情况下,报告页面中使用绝对路径访问图片和资源文件
- 使用–export
参数导出报告,页面中使用相对路径访问图片和资源文件
因此,如果要将报告部署到服务器上供其他人查看,同样需要使用 --export
参数来导出报告,这样可以使图片路径为相对路径。
同时,可以使用 --static_root 静态资源目录
参数,来指定静态资源文件的路径(即报告中的css, js等文件)。我们可以将资源文件部署到静态资源文件服务器上,用例如 https://host:port/static/css/
的路径来访问它,然后在生成报告时,将这个部署出来的服务器地址作为 --static_root
的参数传过去,这样报告中会默认去访问这个URL读取静态资源文件,避免导出报告时重复拷贝这些资源文件造成的磁盘空间占用。
airtest report untitled.air --log_root log/ --outfile log/log.html --lang zh --static_root https://host:port/static/css/ --export ./report
使用了poco语句的报告
由于默认报告是airtest的专属报告,对于poco语句的支持不够完善,因此我们用插件的形式来补充支持poco语句:在你的报告命令行最末尾添加指令--plugin poco.utils.airtest.report
即可。
使用selenium插件的报告指令
如果脚本中使用了我们的selenium插件,在生成报告的命令行最后,请加入--plugin airtest_selenium.report
,可以让报告支持selenium元素。详情请查阅 Airtest-Selenium 文档。
使用Python代码生成报告
通常情况下,我们是通过命令行来生成报告的,不过由于Airtest是python第三方库,所以当然也可以简单地调用接口来生成报告,首先,我们需要先新建脚本-选择纯.py文件,然后在创建时需要勾选生成log:
然后点确定后,会自动生成一个.py的模板,写好脚本之后,我们可以用下面的代码调用接口来生成报告:
# generate html report
from airtest.report.report import simple_report
simple_report(__file__)
上述代码 simple_report
使用的是默认参数,此时需要初始化auto_setup
的logdir
,如
auto_setup(__file__, logdir=True,devices=[
"Android:///",
])
,如果不进行初始化,将无法生成log.txt,报错如下:
而进行初始化之后执行脚本,会在脚本目录下生成log.html和log文件夹(里面存放着log.txt)。但如果我们手工指定了logdir
的目录,log.txt将会在指定的目录下生成。
另外,simple_report
的更多参数也可以参考 文档 。其中可以传入logpath=
来手工指定脚本的log目录,以此简单地生成 log.html
。
如果有更加复杂的需求,例如需要指定导出目录 export_dir
,或是脚本中使用了poco语句,需要用到--plugin poco.utils.airtest.report
,请参考文档 LogToHtml 。