log系统概述
我们搭建的自动化平台,无论是Web和Android,都少不了一个重要的模块,那就是log输出模块,该模块记录了整个自动化平台运行期间的日志记录,完成自动化测试后,我们可以通过日志追踪和分析fail项。根据自动化平台log输出源的不同,可以分为多种类型的log,对应不同的作用。以基于Appium平台的自动化框架为例,有appium-server实时输出的log信息,有android设备端输出的log,还有我们自己定制的日志模块输出的log等等。这些log对我们追踪问题都有很大的帮助,下面我先概述各个log模块的定制和整个log模块的组装,然后给出简单实现。如有谬误,请批评指正。
log子模块实现概要
- Appium-server实时log
这部分log是Appium平台的服务端监测设备连接、启动、测试执行、中间交互和断开连接整个过程的log部分。因为平台有时候也会因为某些原因导致执行用例失败,这时候设备端log和我们自定义的log模块可能无法获取平台log,只能通过平台自己的log进行分析。
appium-server的log其实我们见过,就是在配置windows版本appium-server,启动appium-server后输出的log,如下图所示
这部分的log我们如何在框架里面重定向到自己的日志文件里面呢?这里用到了subprocess.Popen()这个库通过管道输入命令,获取返回值,然后将输出重定向到指定文件即可,关于这一部分的封装后面再详细讲(这部分的代码我是学习老同事的,所以不便贴出所有源码,只会讲一下封装结构和方法,请见谅)。