Appium自动化测试(十六)日志管理

日志级别

日志一般定位的级别如下:debug最低CRITICAL

级别 如何使用
DEBUG 调试信息,也是最详细的日志信息
INFO 证明事情按预期工作
WARNING 表明发生了一些意外,或者不久的将来会发生问题(如 ‘磁盘满了’)。软件还是在正常工作
ERROR 由于更严重的问题,软件已不能执行一些功能了
CRITICAL 严重错误,表明软件已不能继续运行了

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

日志格式

日志格式化是为了提高日志的可阅读性,比如:时间+模块+行数+日志具体信息的内容格式。

日志位置

一个项目中会有很多的日志采集点,而日志采集点必须结合业务属性来设置。比如在登录代码执行前可以插入“准备登录…”日志信息,如果登录完成之后,再设置登录的提示日志就会给人造成误解,无法判断到底是登录之前的问题还是登录之后的问题,因此日志采集点的位置很重要。

logging模块(logging官方文档)

Python的logging模块提供了通用的日志系统,这个模块提供不同的日志级别,并可以采用不同的方式记录日志,比如文件,HTTP GET/POST,SMTP,Socket等,甚至可以自己实现方式记录日志。

logging构成

logging模块包括logger,Handler,Filter,Formatter四个部分。
· Logger 记录器,用于设置日志采集。
· Handler 处理器,将日志记录发送至合适的路径。
· Filter 过滤器,提供了更好的粒度控制,它可以决定输出哪些日志记录。
· Formatter 格式化器,指明了最终输出中日志的格式。

Logger 记录器

Logger是一个树形层级结构,在使用接口debug,info,warning,error,critical;使用之前必须创建Logger实例,即创建一个记录器,如果没有显式的进行创建,则默认创建一个root logger,并应用默认的日志级别(WARN),Handler和Formatter。

方法:**basicConfig(kwargs) 为日志记录系统做型基本配置。参数是字典型可变参数。部分参数如下:
filename 指定日志文件名称
filemode 指定打开问价的模式,如果指定了filename(如果文件模式未只当,则默认为“a”) (w/a/r/w+/a+/r+)
format: 为处理程序使用指定格式字符串
datefmt: 使用指定的日期/时间格式。样式如果指定了格式字符串,则使用它来指定格式字符串的类型
level: 将根记录器级别设置为指定级别

import logging

# logging.basicConfig(level=logging.DEBUG)
logging.basicConfig(level=logging.WARNING)

logging.debug('start app')
logging.info("click login")
logging.warning('No suchelement')
logging.critical("App sudden stop")

Haandler处理器

Handler 处理器,将日志记录发送至合适的路径,Handler处理器类型有很多种,比较常用的有三个:

1.StreamHandler
将日志记录输出发送到诸如sys.stdout(控制台标准日志输出),sys.stderr(控制台错误流输出)或任何类似文件流的对象。
注:stdin , stdout , 以及stderr 变量包含与标准I/O 流对应的流对象.,是内建在每一个UNIX系统中的管道。 当我们打印print的时候就是往stdout里面管道里面塞进去打印的数据,stderr就是错误信息的打印,和stdout一样
2.FileHandler
将日志记录输出发送到磁盘文件。 它继承了StreamHandler的输出功能。
logging.basicConfig(filename=‘runlog.log’,level=logging.DEBUG)

import logging
logging.basicConfig(filename='App_start_log',level=logging.DEBUG) #filename可以是相对路径、绝对路径,如存放在当前路径可以直接写路径名

logging.debug('start app')
logging.info("click login")
logging.warning('No suchelement')
logging.critical("App sudden stop")

3.NullHandler
不做任何格式化或输出。 它本质上是一个开发人员使用的“无操作”处理程序。

Fileter

Handlers和Loggers可以使用Filters来完成比级别更复杂的过滤

Formatter

使用Formatter对象设置日志信息最后的规则、结构和内容,默认的时间格式为%Y-%m-%d %H:%M:%S。

Appium自动化测试(十六)日志管理_第1张图片

使用方法:

import logging

logging.basicConfig(filename="App_start_log",filemode="a",level=logging.DEBUG,format="%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s")

logging.debug('start app')
logging.info("click login")
logging.warning('No suchelement')
logging.critical("App sudden stop")

案例

测试场景

微信登录:启动app,点击登录按钮,选择账号和密码方式登录,输入账号密码,点击登录

import yaml
from appium import webdriver
from sel

你可能感兴趣的:(Appium自动化测试,python,logging,python)