Appium python自动化测试系列之日志的收集(十二)

?13.1 日志的定义

13.1.1 日志的定义

听到日志这个东西可能有的人莫名其妙,第一次接触就会觉得我们为什么要收集日志,即使要收集日志那么我们需要收集哪些日志,日志的作用是什么等等。

其实日志无论是在测试、开发中都非常重要,如果你在跑自动化时程序报错了,但是你没有日志你怎么去定位时程序错误还是你app的错误?或者还是其它环境因素?

在java中有log4j这日志模块,在python里面我们使用的是logging这个模块,这个模块不需要你去怎么下载安装等等,python自带的有,你只需要拿来用就好。

13.2 日志收集实战

13.2.1 日志三要素

假如在测试过程中我们知道了日志的重要性,这样就可以了吗?答案肯定是否定的,我们在收集日志的过程中我们需要明白几个事情:

一、日志的级别

在公司员工有级别之分,这个日志也是一样,他也有级别之分。为什么这么说呢?你总不可能把测试过程中所有的日志都收集下来吧,我管他3、7、21的都收集起来。这个肯定不行。

首先我们日志需要按照info、debug、error等级别来进行区分的。当然这个级别可以自己去设置。在一般的情况下我们普通的输出我们直接用info类型,调试的时候用debug类型,如果预计有错误时那么我们就需要用error类型的日志。

二、日志的格式

为什么有日志格式呢?因为在我们调试程序或者看日志的时候我们为了更好的去阅读,或者增加日志的可读性,以及我们定位问题方便、快速我们需要对日志的格式进行一些优化,好比我在这个日志输出的时候输出时间,以及我看到这个日志的时候我知道是哪一个类出错了呢?

三、日志位置

大家在写程序的时候看日志可能大多数人还是通过在控制台进行查看,如果说你不小心将控制台关闭了呢?以及你集成框架后你怎么从控制台看呢?这些都不是现实的,所以在日志中我们需要有一个位置去保存我们的日志,所以在搭建框架时我们都会有一个默认的日志目录。

13.2.2 日志收集实战

一、日志文件配置

首先我们收集日志我们要对logging模块进行一个配置,其实这个和log4j是一样的,大家可以在官网或者其它地方查询一下这个配置的基础文件,我这里也给大家展示一个:log.conf

[loggers]
keys=root,infoLogger,errorlogger

[logger_root]
level=DEBUG
handlers=infohandler,errorhandler

[logger_infoLogger]
handlers=infohandler
qualname=infoLogger
propagate=0

[logger_errorlogger]
handlers=errorhandler
qualname=errorlogger
propagate=0

###############################################

[handlers]
keys=infohandler,errorhandler

[handler_infohandler]
class=StreamHandler
level=INFO
formatter=form02
args=(sys.stdout,)

[handler_errorhandler]
class=FileHandler
level=ERROR
formatter=form01
args=(‘../logs/mylog.log‘, ‘a‘)

###############################################

[formatters]
keys=form01,form02

[formatter_form01]
format=%(asctime)s %(filename)s %(levelname)s  %(message)s
datefmt=%Y-%m-%d %H:%M:%S

[formatter_form02]
format=%(asctime)s %(filename)s %(levelname)s  %(message)s
datefmt=%Y-%m-%d %H:%M:%S

 这个配置文件每个人配置的都不一样,但是大体功能都差不多,这个只需要根据自己的爱好去定义就行,下面我把配置定义的方法贴出来大家看一下:

1. 初始化 logger = logging.getLogger("endlesscode"),getLogger()方法后面最好加上所要日志记录的模块名字,后面的日志格式中的%(name)s 对应的是这里的模块名字
2. 设置级别 logger.setLevel(logging.DEBUG),Logging中有NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL这几种级别,日志会记录设置级别以上的日志
3. Handler,常用的是StreamHandler和FileHandler,windows下你可以简单理解为一个是console和文件日志,一个打印在CMD窗口上,一个记录在一个文件上
4. formatter,定义了最终log信息的顺序,结构和内容,我喜欢用这样的格式 ‘[%(asctime)s] [%(levelname)s] %(message)s‘, ‘%Y-%m-%d %H:%M:%S‘,
%(name)s Logger的名字
%(levelname)s 文本形式的日志级别
%(message)s 用户输出的消息
%(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
%(levelno)s 数字形式的日志级别
%(pathname)s 调用日志输出函数的模块的完整路径名,可能没有
%(filename)s 调用日志输出函数的模块的文件名
%(module)s  调用日志输出函数的模块名
%(funcName)s 调用日志输出函数的函数名
%(lineno)d 调用日志输出函数的语句所在的代码行
%(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示
%(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数
%(thread)d 线程ID。可能没有
%(threadName)s 线程名。可能没有
%(process)d 进程ID。可能没有

  

其实大家只需要按照我上面的配置就好,这里需要提点的一下是,在配置文件里面你需要配置一下日志的输出文件,如果你没有这个文件,系统会报错,“args=(‘../logs/mylog.log‘, ‘a‘)” 这一句大家根据自己的情况进行更改。

当我们把所有的配置文件配置好了之后我们只需要在我们需要用到的地方去引入就好,看下面的代码:

#coding=utf-8
import logging
import logging.config
#这个是配置文件的路径
CONF_LOG = "../Config/log.conf"
logging.config.fileConfig(CONF_LOG)
logger = logging.getLogger()
#下面就是使用日志打印日志信息
logger.info("info类型的日志")
logger.error("error 的日志")

  通过上面的配置以及输出最后的结果如下图:

通过这个图片我们能够看到我们有输出的日志时间、以及类的名字、以及等级。是不是很方便?动手吧。

备注:我这里把错误的日志在logs文件下的mylog.log文件也进行了保存,因为我们在看线上错误日志时大多数只看错误的日志,所以只将错误的日志进行了保存,如果其它类型的需要保存,那么你就按照类似格式在info等配置下也把目录配置进去即可。

 

时间: 2024-10-08 04:12:58

Appium python自动化测试系列之日志的收集(十二)的相关文章

Appium python自动化测试系列之使用HTMLTestRunner生成测试报告(十三)

?13.1 测试报告概述 13.1.1 测试报告的定义 在前面章节我们已经讲了自动化基础的很多东西,如果说掌握了,而且自己动手去练习了,我相信在一些初级的面试中是没任何问题的,今天我们接触的应该算是一个比较新的东西,也算是开启另一层知识的大门. 在手工测试过程中如果发现了bug我们需要提交测试报告,自动化中虽然当程序出错的时候我们不可能让程序自动去提交bug(其实也可以,只是需要自己去开发模块,思路:当程序监听到错误的时候就触发一个提交bug的程序),但是为了体现工作的价值当自动化跑完之后是不是

Appium python自动化测试系列之混合app实战(十一)

12.1 什么是混合App 12.1.1 混合app定义 什么是混合app,其实这个不言而喻,我们的app正常来说应该都是native的,但是实际工作中却不是,反正种种原因我们的app会有native的而且中间还会有H5页面,这其实就是我们常说的混合,当然还有一种就是纯H5的,但是这里我们不做过多的讲解. 12.2 混合app实战思路 12.2.1 代码实战 在前面的的章节内嵌h5页面定位我们就已经讲过这个问题,其实本讲的内容大家可以仔细把定位的内嵌h5定位问题再回顾一遍那么你就能够理解这里面的

Appium python自动化测试系列之页面滑动原理讲解(十)

10.1.1 页面滑动原理分析 在页面滑动查找章节我们就讲了滑动的知识点,只是不知道大家是否有认真练习以及去理解,如果你认真练习.理解了那么我相信这一章节的东西不用看也能够完成,下面我们还是简单分析一下. 所谓的页面滑动在我们实际操作手机的过程中就是不断的从屏幕的下面滑到上面,或者右边滑到左边,反之亦然.其实在做自动化滑动的时候我们遵循的也是这个道理,我们只需要按着一个点然后在屏幕上拖动到另外一个点就行,这就实现了一个简单的滑动.还不懂?回去看第六章的滑动定位吧. 10.2 常见页面滑动方式实战

RF+Appium框架自动化测试系列一之(Mac下Appium环境搭建)万事开头难

Mac下Appium环境搭建: 消失了3个月,有一段时间没来园子更新博客了,各位看官见谅哈哈,消失是因为TestYao刚换了工作环境没外网,好多笔记没能及时的记录分享,以后有时间慢慢补上吧,这段时间主要接触了移动端app的自动化测试,公司为了快速把移动端自动化这块搞起来,试用几款目前流行的工具,腾讯的xtest定制版.神州数码的自动化测试平台.开源rf+appium框架. 经过一段试用最终还是选择了rf+appium主要原因有: 1.开源,网上社区活跃 2.扩展性强,针对不同项目不同的需求,封装

Appium+Python自动化测试(二)——运行App程序示例

在上一篇博客中,已经将环境搭建好了.现在,我们利用搭建的环境来运行一条测试脚本,脚本中启动一个计算器的应用,并实现加法的运算. 创建模拟器 在运行App之前,首先需要创建一个Android模拟器,也可以使用真机来运行,效果更佳. 进到Android SDK的目录,双击运行AVD Manager.exe 点击Create创建一个Android模拟器 输入一个模拟器名称,选择设备类型和API版本,点击进行创建.创建完成后会显示当前所有的设备,选择设备,点击Start启动 第一次启动的时候会有点慢,要

Windows&amp;Appium&amp;Python自动化测试-Appium安装

一.安装node.js 官方下载地址为:https://nodejs.org/en/download 傻瓜式安装即可,安装完成后,CMD中运行node -v查看版本号 输入npm 出现如上图信息,表示 node.js 安装成功.npm 是一个 node 包管理和分发工具,有了 npm,后面就可以输入指令在线安装 appium """ 此处内容无需执行,仅供参考,虽然也可以实现,但后边内容给了更好方式 安装appium服务端,可通过cmd 下输入 npm install -g

Appium&amp;Python自动化测试-环境搭建之安卓SDK

一.安装包工具准备: jdk1.8.0(64 位) installer_r24.4.1-windows-androidSDK 二.JDK的安装及配置 官方下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 选中"Accept License Agreement",下载所需版本即可,这里下载的是"Windows x64"的版本,安装过程建议使

Mac&amp;Appium&amp;Python自动化测试-环境搭建之安卓SDK

一.摘要 本博文将详细讲述在Mac环境下的jdk安装.配置以及环境校验:安卓sdk安装.配置以及环境校验 二.安装包工具准备: jdk1.8.0(64 位) android-sdk_r24.4.1-mac osx.zip 三.JDK的安装及配置 官方下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 选中"Accept License Agreement",下

selenium+python自动化测试系列---基础知识篇(1、HTML基础知识1)

1.什么是HTML HTML是一种描述网页的语言.HTML指超文本标记语言(Hyper Text Markup Language),它不是一种编程语言,而是一种标记语言(markup language),HTML包含静态HTML和动态HTML 2.HTML标签 HTML标记标签通常被称为HTML标签(HTML tag) HTML标签是由尖括号包围的关键词,如:<html> HTML标签通常是成对出现的,如:<b>,</b> 标签对中的第一个标签是开始标签(<b&g