1.自动化
自动化三种:数据驱动,代码驱动,关键字驱动。
框架其实就是工具的集合。
数据驱动 :根据数据来去测试的。比如case是存在excel中的数据
代码驱动: 测试用例都是写代码来测试的。业务case是代码实现
关键字驱动 主要用于ui自动化 有集成包比如
点击 --> .click()
下一步
提交 --> .submit()
根据字典中存放的对应的方法,直接只需了解关键字就可以(适合对对吗不了解)
{
'点击':click()
'提交':submit()
}
2.日志模块logging
import logging #日志模块导入
# logging
# logging.basicConfig(level=logging.DEBUG,#控制台打印的日志级别
# filename='hahah.log', #指定log存放的文件
# filemode='a', #指定写入的模式为追加模式
# format=
# '%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s'
# #日志格式
# ) #这种写法对于中文会乱码并且控制台不再打印日志
日志的四种级别
# logging.debug('debug级别,最低级别,一般开发人员用来打印一些调试信息')
# logging.info('info级别,正常输出信息,一般用来打印一些正常的操作')
# logging.warning('waring级别,一般用来打印警信息')
# logging.error('error级别,一般用来打印一些错误信息')
综上情况 从新设计:
# 1、办公室
# 2、负责往控制台里面输出日志信息的
# 3、往日志文件里面写日志的,按天生成日志,清理日志
import logging #日志模块导入
from logging import handlers #导入相应
logger = logging.getLogger() #先实例化一个logger对象,先创建一个办公室
logger.setLevel(logging.DEBUG) #设置日志的级别的人
# fl = logging.FileHandler(filename='a.log',mode='a',encoding='utf-8')该功能也能写bl功能更强大。
cl = logging.StreamHandler() #负责往控制台输出的人
bl = handlers.TimedRotatingFileHandler(filename='a.log',when='S',interval=1,backupCount=3,encoding='utf-8') #负责往日志文件出入interval=间隔多长时间生成,backupCount保留几个
# when,按什么单位,生成日志。
#S 秒
# M 分
# H 小时、
# D 天、
# W 每星期(interval==0时代表星期一)
fmt = logging.Formatter('%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s') #日志格式 一般固定写法
cl.setFormatter(fmt) #设置控制台输出的日志格式
bl.setFormatter(fmt) #设置文件里面写入的日志格式
logger.addHandler(cl) #把已经调教好的人放到办公室里
logger.addHandler(bl) ##把已经调教好的人放到办公室里
#指定日志的格式
logger.debug('我是debug。。。')
logger.warning('我是waring。。。')
思考并查看:
#1、先看看,是不是控制台也有了,文件里面也有了,中文也不是乱码了
#2、每秒运行一次,看看是不是每秒都会产生一个文件
#3、再看看是不是帮你备份3个
3.封装写日志的类
import logging
from logging import handlers
class MyLogger():
def __init__(self,file_name,level='info',backCount=5,when='D'):
logger = logging.getLogger() # 先实例化一个logger对象,先创建一个办公室
logger.setLevel(self.get_level(level)) # 设置日志的级别的人,根据函数传入
cl = logging.StreamHandler() # 负责往控制台输出的人
bl = handlers.TimedRotatingFileHandler(filename=file_name, when=when, interval=1, backupCount=backCount, encoding='utf-8')
fmt = logging.Formatter('%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s')
cl.setFormatter(fmt) # 设置控制台输出的日志格式
bl.setFormatter(fmt) # 设置文件里面写入的日志格式
logger.addHandler(cl)
logger.addHandler(bl)
self.logger = logger
def get_level(self,str): #方便写日志级别
level = {
'debug':logging.DEBUG,
'info':logging.INFO,
'warn':logging.WARNING,
'error':logging.ERROR
}
str = str.lower() #这样就会不区分输入的大小写
return level.get(str) #取日志字典中的级别
lw_log = MyLogger('lw.log','debug')
lw_log.logger.warning('哈哈哈')