Airtest报告“全攻略”,看完直接用脚本生成、导出报告,真香!

简介: Airtest报告“全攻略”,看完直接用脚本生成、导出报告,真香!

前言



最近依然收到来自答疑群小伙伴对生成报告这方面的疑问,包含生成报告和导出报告的区别、能不能不用IDE来生成报告、如何在用脚本生成/导出报告等等,今天的推文将跟大家一一详解这些问题:


  • 在IDE中一键生成、导出报告
  • 用命令行生成、导出报告
  • 在脚本中生成、导出报告


1.在IDE中一键生成、导出报告



① 生成报告


如果同学们使用我们专用的编辑器AirtestIDE来编写和运行脚本,那么同学们就可以非常便捷地在IDE中使用快捷键生成和导出报告。


运行完脚本之后,点击顶部菜单栏的 查看报告 按钮(快捷键Ctrl+L),即可快速生成并在浏览器中打开html格式的报告:


网络异常,图片无法展示
|


若想查看生成报告的本地文件,可以 右键 点击脚本名称,选择 打开报告文件目录


网络异常,图片无法展示
|


细心的同学还会发现,在我们点击 查看报告 按钮的同时,log查看窗会出现1条生成报告的命令(这条命令非常重要,下文我们也会讲到):


网络异常,图片无法展示
|


其实在这条命令中,通过 --outfile 参数,我们也可以知道报告所在的本地文件路径。


但这里有一个新手同学很容易犯的错误值得我们注意下,很多同学找到了报告所在的本地文件夹之后,就直接把这个文件夹打包发给同事/领导查看,结果发现,同事/领导根本不能正常查看这个报告:


网络异常,图片无法展示
|


出现这个问题的原因其实是,这样生成的html报告,里面的一些图片路径和静态资源路径是 绝对路径 。当报告被发到别的电脑上时,html再想通过绝对路径找到这些图片资源和静态资源,就不可能了,所以才造成 其他人看到的报告完全没有图片和相应样式 的情况。


网络异常,图片无法展示
|


② 导出报告


那么,为了让别人也可以看到同学们本地生成的报告,我们在IDE中提供了导出报告的功能,右键点击脚本名称,选择 导出报告 ,之后再选择导出报告的存放路径即可:


网络异常,图片无法展示
|


导出报告之后,图片资源和静态资源的路径都被改成了相对路径,并且文件夹中还打包了对应的静态资源文件。这样我们再把导出好的报告发到别的电脑查看时,就不会出现上述问题了。


网络异常,图片无法展示
|


③ 生成报告失败


另外,在IDE中生成/导出报告的时候,我们还有可能会遇到报告生成失败的问题:



网络异常,图片无法展示
|


这时候可以复制log查看窗里面那条生成报告的命令,到本地命令行中运行,查看具体的报错原因(不会分析报错原因也可以发送到 官方答疑Q群1017250147 ,获取官方解答)。


目前遇到最常见的原因就是,同学们在IDE中设置了本地python环境,并且本地python环境中同时安装了 pocopocoui ,这两个库冲突导致生成报告失败。


2.用命令行生成、导出报告



也有很多同学并不满足于在IDE中运行脚本,所以他们就会使用命令行来运行脚本、生成报告等等。需要注意的是,在命令行中运行Airtest脚本,使用的python环境就是 本地python环境 了,不是IDE集成好的带有 airtestpocoui 库的精简python环境(注意是 pocoui ,不是 poco ,若已经安装了 poco ,则需要卸载,否则会跟 pocoui 有冲突)。


所以我们在命令行运行脚本、生成报告之前,要先确保我们本地的python环境已经已经装好了 airtestpocoui ,使用 pip list 指令即可查看。


安装命令如下:


pip install airtest
pip install pocoui
复制代码


① 运行脚本 airtest run ...


在生成报告之前,我们需要先运行1次airtest脚本,运行脚本的命令是 airtest run + 脚本文件路径 ,另外该命令还可以传入以下几个参数:


  • --device,用来指定连接的被测设备
  • --log,用来指定log内容和截图存放的目录
  • --recording,运行脚本时进行录屏操作


示例如下:


airtest run D:/test/report_test.air --device Android:/// --log C:/Users/xiaoming/log --recording 
复制代码


如果同学们对在命令行运行脚本还不是那么熟悉,可以先在IDE中运行脚本,观察log查看窗里面那条运行脚本的命令是如何写的,甚至我们可以直接复制该命令到命令行中执行。


② 生成报告 airtest report...


运行完脚本之后,我们就可以在命令行中用 airtest report + 脚本文件路径 指令来生成一份HTML格式的报告。


该命令也有非常多的可传参数,例如:


  • --log_root,指定log内容和截图文件所在的目录
  • --outfile,指定生成报告的目录
  • --lang,指定报告语言,可以是中文/英文
  • --export,导出一个包含所有资源的报告文件
  • --static_root,指定静态资源文件的路径


示例如下:


airtest report D:/test/report_test.air --log_root C:/Users/xiaoming/log --outfile E:/log_test/log.html --lang zh
复制代码


另外,在上文我们有提到,点击IDE中 查看报告 按钮的时候,log查看窗会相应地出现1条生成报告的命令,我们也可以复制该命令到命令行中运行,也能够帮助我们生成报告。


③ 导出报告 --export ...


未使用导出参数 --export 生成的报告,与IDE点击查看报告按钮生成的报告是一样的,只能在本地查看,不能发到别的电脑上查看。


若需要导出报告,我们需要在生成报告指令时,添加上这个 --export 参数:


# 使用了export参数,outfile参数会失效,所以使用了export参数就可以不使用outfile
airtest report D:/test/report_test.air --log_root C:/Users/xiaoming/log --lang zh --export E:/log_test/
复制代码


这样生成的报告,图片和资源路径才会是相对路径,并且包含了静态资源文件,能发到别的电脑上查看。


网络异常,图片无法展示
|


④ 静态资源--static_root ...


但一些经常导出报告的同学会发现,每次导出1份报告,就会带有1份相同的静态资源文件 static ,它包含了报告中的css和js等文件,这样的重复拷贝占用了很多的磁盘空间。并且我们知道,除非报告的样式做了某些更新,否则这些静态资源文件都是固定不变的。


所以我们可不可以把这个静态资源文件统一放到1个地方,每一份HTML报告都去这个地方访问这些静态资源呢?这样即使静态文件有所改变,我们也只需要替换掉这个地方的静态资源文件即可。


答案当然是可以的,使用 --static_root 参数即可实现!我们可以将这些资源文件部署到静态资源文件服务器上,用例如  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/
复制代码


这样导出的HTML报告,里面的静态资源路径,都是部署好的服务器地址。另外需要注意的是,传入 --static_root 的参数需要以 http 开头才能被识别:


网络异常,图片无法展示
|


关于在命令行生成、导出报告的内容,我们在之前的推文 导出报告总是出错怎么办 有更加详细的介绍和示例,对在命令行运行脚本、生成报告感兴趣的同学可以前往查看下。


3.在脚本中生成、导出报告



如果不借助IDE和命令行,我们能不能直接在脚本中调用一些接口,让脚本执行完毕时,自动生成或者导出1份报告给我们呢?


我们可以借助 simple_report() 接口或者 LogToHtml() 类来实现。


simple_report生成报告


先来讲讲这个 simple_report 接口,它其实是1个简化版的生成报告的接口,可以减少同学们的理解成本和使用成本:


网络异常,图片无法展示
|


如果同学们不指定任何参数,该接口会使用默认的参数生成1份HTML格式的报告,output='log.html' 表示在当前脚本路径下生成名为 log.html 的airtest报告:


from airtest.report.report import simple_report
simple_report(__file__)
复制代码


网络异常,图片无法展示
|


如果指定了 output 参数,则会按指定路径生成报告:


from airtest.report.report import simple_report
simple_report(__file__,logpath=True,output=r"D:\test\report02\log.html")
复制代码


网络异常,图片无法展示
|


网络异常,图片无法展示
|


LogToHtml导出报告


如果同学们不需要通过脚本的形式导出报告,仅需要生成报告在本地查看的话,只要使用 simple_report 接口即可。


但如果需要通过脚本的形式来导出1份报告,则需要用到 LogToHtml 类:


网络异常,图片无法展示
|


这个类的参数相对于 simple_report() 就复杂的多了,包含:


  • script_root,脚本路径
  • log_root,log文件的路径
  • static_root,部署静态资源的服务器路径
  • export_dir,导出报告的存放路径
  • script_name,脚本名称
  • logfile,log文件log.txt的路径
  • lang,报告的语言(中文:zh;英文:en)
  • plugins,插件,使用了poco或者airtest-selenium会用到


示例如下,我们在指定路径 D:\test\report02 中导出了 D:\test\report01.air 脚本的运行报告,报告语言为英文:


from airtest.report.report import LogToHtml
h1 = LogToHtml(script_root=r'D:\test\report01.air', log_root=r"D:\test\report01.air\log", export_dir=r"D:\test\report02" ,logfile=r'D:\test\report01.air\log\log.txt', lang='en', plugins=None)
h1.report()
复制代码


网络异常,图片无法展示
|


网络异常,图片无法展示
|


③ 用 try-finally 保证最后都能生成报告


一般情况下,生成报告的语句应该是放在所有用例脚本的后面,保证用例执行完毕之后,才执行生成脚本的语句。


但这里容易出现一种情况,一旦前面有用例脚本执行失败,终止了整个脚本的运行,即还没有执行到生成报告的语句时,脚本运行就已经停止了,这样也不能够正常生成报告。


所以我们可以用 try-finally 语句,不论脚本是否运行失败,最终都会生成1份运行报告:


try:
    poco("com.netease.newsreader.activity:id/bjd").wait_for_appearance()
    poco("com.netease.newsreader.activity:id/awo").click()
    ...
finally:
    simple_report(__file__,logpath=True,output="../netease_music/登录.html")
    print("-----执行完毕-----")
复制代码


小结



对于新手同学,我们还是更建议大家多在IDE中运行脚本、生成报告以及导出报告。因为这样大家可以在log查看窗观察自动生成的命令,对该命令的各参数熟悉之后,再使用命令行自己编写这些命令,或者直接通过脚本来完成生成报告或者导出报告的事情。

相关文章
|
7月前
|
测试技术 Python
如何正确使用Airtest报告插件?报告小tips上线
如何正确使用Airtest报告插件?报告小tips上线
167 0
|
7月前
|
JSON 开发工具 数据格式
基于Python开发的火车票分析助手(源码+可执行程序+程序配置说明书+程序使用说明书)
基于Python开发的火车票分析助手(源码+可执行程序+程序配置说明书+程序使用说明书)
136 0
|
7月前
|
jenkins 测试技术 持续交付
Jenkins配置测试报告后无法正常显示或显示空的解决方法(问题集锦)
根据具体情况逐一排查上述问题,往往可以解决Jenkins配置测试报告无法正常显示或显示空的问题。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
82 0
|
7月前
|
程序员
SourceCount代码统计工具使用
SourceCount代码统计工具使用
113 0
|
7月前
|
JSON 开发工具 数据格式
基于Python开发的开心麻花影视作品分析系统(源码+可执行程序+程序配置说明书+程序使用说明书)
基于Python开发的开心麻花影视作品分析系统(源码+可执行程序+程序配置说明书+程序使用说明书)
|
7月前
|
数据可视化 数据挖掘 Python
基于Python开发的Excel数据分析系统(源码+可执行程序+程序配置说明书+程序使用说明书)
基于Python开发的Excel数据分析系统(源码+可执行程序+程序配置说明书+程序使用说明书)
158 0
|
安全 jenkins 测试技术
Jenkins配置测试报告后无法正常显示或显示空白 的解决方法(问题集锦)
Jenkins配置测试报告后无法正常显示或显示空白 的解决方法(问题集锦)
496 0
为你的项目做一份Rmarkdown报告吧
markdown是一种轻量级标记语言,现在许多软件例如Mou、MarkdownEditor、Haroopad、Typora等,通过这些工具可以便捷的完成markdown文字录入,并且支持导出PDF、HTML等格式。对markdown语法还不太了解的人,请自行百度了解,个人认为只要花上几个小时你就能掌握,确实没什么难度,本文主要简单介绍R环境中的markdown,也就是Rmarkdown这个包怎么一步步的制作我们的项目报告。
98 0
|
监控 测试技术 Apache
测试工具介绍
ApacheBench、JMeter 和 Gatling 都是常用的性能测试工具,这里为您详细介绍这三个工具的操作流程。
157 0
|
Python
现场打脸:如何使用Selenium批量上传文件?
现场打脸:如何使用Selenium批量上传文件?
207 0

热门文章

最新文章