自动化测试框架设计

app软件包:通常用于移动端测试时,进行测试包的管理 放置不同的测试包 如果是web自动化测试框架则不需要设置该路径

pages软件包:basepage.py该模块封装了一个类(BasePage) 该类封装最基本的方法  BasePage类:初始化driver(__init__(self.driver))    基本方法封装(find_element(),find_elements(),get_window_size() 其他跟driver相关的基本方法,会用到的都可以封装起来)  其他page类,一个页面对应一个page类(存放业务逻辑操作对象) login_page(定义LoginPage类封装登录操作相关元素和方法)  member_manage_page(定义MemberManagePage类封装会员管理操作相关元素和方法)

 

 

 

日志收集

在自动化脚本运行过程中,IDE控制台一般都会输出运行日志。但是如果测试项目是在linux服务器上面运行,没有IDE控制台输出log,该如何采集日志?

日志作用

不管是在项目开发还是测试过程中,项目运行一旦出现问题日志信息就非常重要。日志是定位问题的重要手段

日志级别

脚本运行会有很多的情况,比如调试信息、报错异常信息等。日志要根据这些不同的情况来继续分级管理,不然对于排查问题的筛选会有比较大的干扰

日志需要按照info、debug、error等级别来进行区分,级别可以自己去设置。一般情况下普通的输出我们使用info类型,调试的时候用debug类型,预计有错误时需要使用error类型

日志格式

日志格式化是为了提高日志的可阅读性,比如:时间+模块+行数+日志具体信息的内容格式。如果日志信息杂乱无章的全部数出来,不利于定位问题。日志格式化输出,非常便于阅读查看

日志位置

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

logging模块

Python的logging模块提供了通用的日志系统,这个模块提供不同的日志级别,并可以采用不同的方式记录日志,最常见的方式就是通过文件来记录日志

#导入logging模块 

import logging

logging模块包括logger,Handler,Filter,Formatter四个部分

Logger记录器,用于记录日志

Handler处理器,将日志记录发送至合适的路径

Filter过滤器,提供了更好的粒度控制,它可以决定输出哪些日志记录

Formatter格式化器,指明了最终输出中日志的格式

Logger记录器

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

basicConfig(**kwargs) 为日志记录系统做基本配置

部分参数

filename 指定日志文件名称

filemode 指定打开文件的模式,如果指定了filename(如果文件默认未指定,则默认为'a')

文件读写模式:w 以写方式打开 W 文件若存在,首先要清空,然后重新创建  a以追加模式打开(从EOF开始,必要时创建新文件) r+ 以读写模式打开  w+以读写模式打开 a+以读写模式打开

format 为处理程序使用指定的格式字符串

datefmt 使用指定的日期/时间格式 样式如果指定了格式字符串,则使用它来指定 格式字符串的类型

level 将根记录器级别设置为指定级别

Handler处理器

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

1.StreamHandler 将日志记录输出发送到诸如sys.stdout,sys.stderr或任何类似文件流的对象。输出到控制台

2.FileHandler 将日志 记录输出发送到磁盘文件。它继承了StreamHandler的输出功能

3.NullHandler 不做任何格式化或输出

import logging
# logging.basicConfig(level=logging.INFO)
logging.basicConfig(filename='temp.log',level=logging.INFO)
logging.error('hello')

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

 

 

import logging
logging.basicConfig(filename='run.log',level=logging.DEBUG,format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s')
logging.error('hello')

 

在一个文件中配置的logger只能在这个文件中使用,如果一个项目中很多文件都要使用logger,如何统一管理?

将这些日志配置的参数抽离出来,各个模块需要使用则直接引用即可,方便统一维护和管理

日志格式配置

将log输出格式,输出路径等参数抽离出来作为一个配置表

logger.config

[loggers]
keys=root,infoLogger

[logger_root]
level=DEBUG   #控制整体的日志输出级别
handlers= consoleHandler,fileHandler

[logger_infoLogger]
handlers=consoleHandler,fileHandler
qualname=infoLogger
propagae=0 #0表示输出日志,但不往更高级别的日志进行传递,比如不往root logger传递

[handlers]
keys=consoleHandler,fileHandler

[handler_consoleHandler]
class=StreamHandler
level=INFO  #在控制台中会输出的日志级别,注意,仅作用于控制台,不作用于其他handler
formatter=form02
args=(sys.stdout,)

[handler_fileHandler]
class=FileHandler
level=INFO  #在日志文件中会输出的日志级别,注意,仅作用于日志文件,不作用于其他handler
formatter=form01
args=('runlog.log','a')

[formatters]
keys=form01,form02

[formatter_form01]
format=%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s

[formatter_form02]
format=%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s

logger_config.py

import  logging.config

conf_file='logger.conf'
logging.config.fileConfig(conf_file)
logger=logging.getLogger()

logger.py

from logging_demo.logger_config import logger
logger.info('hello')

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值