Python_15 ddt驱动与日志

一、查缺补漏
1. 在测试报告中添加注释,写在类名下面就行,方法名下面,三引号

2. 直接import ddt引用的时候需要ddt.ddt, ddt.data, ddt.unpack
 from ddt import ddt,data,unpackkeyi from会更好,引用的时候直接data就行
二、DDT数据驱动
1. 数据驱动:将不同的数据在同一个业务逻辑上运行,只需写一个测试用例获取改变项,就可以完成测试文档
2. 使用:
  a. 安装DDT(Data Driven Tests) pip install ddt

  b. 语法:ddt只能对可迭代对象进行解包,像元组和列表,不可以用于字典解包,字典用zip
   from ddt import ddt,data,unpack 从ddt库种导出ddt,data,unpack函数
   在测试类上使用@ddt
   在测试函数上使用@data(*case_data),进行数据解压,然后每一个元素传入测试函数

  c. @data():解压一层
   @unpack(): 解压多层

  d. 用于取值做接口测试

三、日志
1. 日志模块
  a. 日志作用:日志记录程序的执行过程
  b. 日志要素
    i. 日志渠道:日志输出位置,文件,控制台,用来收集日志的
    ii. 日志级别:info、debug、error 我们经常用的
    iii. 日志格式:日志的样子,类似于报错提示哪一行
    iv. 日志内容:自己输出的内容,或者是报错信息
2. 日志级别(debug < info < warning < error < critical)按严重度从小到大排序 ,查看级别顺序是只可以查看更严重的
  a. debug:代码调试的输出,不希望别人看到的日志
  b. info:表示程序正常执行的输出
  c. warning:不影响程序执行,可以优化,提示你
  d. error:程序执行报错
  e. critical:程序严重问题
  f. 修改root收集器的日志级别:logging.basicConfig(level=logging.级别) 设置日志级别
3. 日志收集器创建
  a. 创建日志收集器:创建和root一样的收集器
    test_log = logging.getLogger(name='日志渠道的名称') 日志渠道的名称一般是与项目名称一致
  b. 创建日志收集渠道:输出到哪里
    实例化名称1 = logging.StreamHandler() 创建日志控制台渠道,需要实例化
  c. 创建日志格式 fmt是参数,参数可以做名字,但是关键字不可以,紫色是参数 格式解释在图片里
   格式名 = '【%(asctime)s-%(name)s-%(levelno)s-%(levelname)s-%(pathname)s-%(lineno)d】:%(message)s'
   格式接收名 = logging.Formatter(fmt = 格式名)
   测试中的值传给了message
  d. 设置日志输出格式【渠道】实例化名称1.setFormatter(fmt =格式接收名) 实例化名称1.setLevel(logging.级别) 渠道级别
  e. 设置日志级别【收集器】test_log.setLevel(logging.级别) 一般只设定一个
  f. 收集器绑定渠道 test_log.addHandler(实例化名称1)

4. 日志切割 将日志收集到文件中方便收集 日志会叠加在文件中
  handlers.RotatingFileHandler():按文件大小切日志【了解】
  handlers.TimedRotatingFileHandler():按时间切日志【掌握】
  filename:日志文件名称,要带路径,默认是当前目录
  when='h',:日志滚动周期的单位,S:秒, M:分钟 ,H:小时, D:日, W:周, midnight:日期
  interval=1:滚动周期(日志切割周期),1 间隔多个个when
  backupCount=0:日志保留的个数
  encoding=None:编码格式

 5. 函数封装日志,一般调用日志函数的实例化对象,不直接调用函数

四、一些小记
1. 实例化名 = logging.getLogger() 实例化接收,里面没有内容打印出来没有内容None 用于日志
2. 报缺少self字段时多半是实例化问题,后面没写括号
3. 不想显示None把print去掉就好

posted @ 2023-05-02 22:00  Alisa-sweet  阅读(176)  评论(0编辑  收藏  举报