Web自动化之测试流程、Web项目运行必备条件、日志模块

1. 自动化测试流程(一般流程)

  • 需求分析

    • 确定目标项目是否适合进行自动化测试(什么样的项目适合自动化)
  • 挑选适合做自动化测试的功能

    • 电商项目主流程
      • 登录/注册
      • 浏览商品
      • 购物车
      • 订单模块
      • 支付模块
        • 第三方业务
      • 物流跟踪
        • 第三方服务
    • 一般情况下, 需要和第三方业务进行交互的模块, 都不适合执行自动化.
    • 手工测试业务逻辑相对的复杂的也不适合自动化.例如:OA 系统
  • 设计用例

    • 讲: 运用手工测试阶段的各种测试方法出用例即可
    • 做: 从现成的手工测试用例中抽取子集(适合实现断言端的用例)即可
  • 搭建自动化测试环境 [可选]

    • 开发环境组成
      • 开发语言: Python
        • Python 解释器
        • 开发工具 IDE(IDE: 集成开发环境的简称)
          • PyCharm
    • 测试环境组成
      • 浏览器
      • 浏览器驱动
      • Selenium 包
      • 各种插件
        • 参数插件
  • 设计自动化测试项目的架构 [可选]

    • 环境组成
    • 自动化项目工程结构
    • 设计模式的选型(PO)
    • 实现数据驱动
    • 持续集成(CI/CD)
      • Jenkins
  • 编写代码

    • 确保自动化脚本能够正常执行(需要调试)
  • 执行测试用例

  • 生成测试报告并分析结果


2. Web 项目运行的必备条件

  • 硬件层面

    • 服务器设备
      • 实体设备
        • 机房
      • 虚拟设备
        • VPS(虚拟服务器)(大多数公司采用的方案)
        • 腾讯云/阿里云/华为云/百度智能云
        • 工作中要获取的信息
          • 账号密码
  • 软件层面

    • 操作系统
      • Linux(免费)
      • Windows Server(收费)
    • Web 系统软件
      • Apache
      • Nginx
      • IIS
    • 数据库软件
      • MySQL
    • 开发语言
      • Java
      • PHP
    • 环境构建问题参考方案
      • 直接询问开发照开发环境原样搭建
      • 直接使用一体安装包: LNMP 或 LAMP

3. Web UI 自动化注意点

  • 只关注 UI 界面效果及逻辑即可, 不用校验数据库中的数据
  • 测试过程中对数据库产生脏数据如何处理?
    • 自动测试执行前, 对数据库进行备份, 执行完成后, 还原数据库备份(测试环境)
    • 需要联络 DBA(数据库管理员)(生产环境)

4. XPath 策略方法扩展

//*[contains(text(),'部分文本信息')]

策略说明: 根据给出的部分文本内容定位元素


5. 日志模块

  • 代码步骤

    1. 导包:
      • import logging
      • import logging.handles
    2. 实例化日志器
      1. logging.getLogger()
      2. 设置日志输出级别方法
        • 日志器对象.setLevel(level=logging.DEBUG) -->DEBUG: 日志级别常量
    3. 实例化处理器
      1. logging.StreamHandler() --> 输出日志到控制台
      2. logging.FileHandler() --> 输出日志到文件(文件大小不可控)
      3. logging.hanlders.TimedRotatingFileHandler() -->输出日志到文件(控制文件数量及大小)
    4. 实例化格式器
      1. 格式化占位符:fmt = ‘%(asctime)s %(levelname)s [%(name)s] [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s’
      2. formatter = logging.Formatter(fmt=fmt)
    5. 将格式器添加给处理器
      • 处理器对象.setFormatter(格式器对象)
    6. 将处理器添加给日志器
      • 日志器对象.addHandler(处理器对象)
  • 注意:

    • 日志模块无论是基本用法还是高级用法, 都属于一种设置型代码, 不要死记, 只要清楚需要修改的内容, 完成调用即可!
  • 代码演示1–日志模块基本使用

    """ 
    日志模块基本使用 -- 输出日志信息到文件
    """
    import logging
    
    # 注意:
    # 1. 如果指定将日志信息输出到文件, 则控制台不会在打印日志信息
    # 2. 日志文件默认情况下, 是以追加的形式添加后续内容的
    fmt = '%(asctime)s %(levelname)s [%(name)s] [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s'
    logging.basicConfig(filename='./info.log', level=logging.DEBUG, format=fmt)
    
    # 格式化输出
    # fmt = '%(asctime)s %(levelname)s [%(name)s] [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s'
    # logging.basicConfig(format=fmt, level=logging.DEBUG)
    
    # 设置日志输出级别
    # 注意: 系统默认的日志输出级别为 warning 级别
    # logging.basicConfig(level=logging.DEBUG)
    
    # 自定义日志输出方法
    logging.debug('调试信息')
    logging.info('普通信息')
    logging.warning('警告信息')
    logging.error('错误信息')
    logging.critical('严重错误')
    
  • 代码演示–日志模块高级用法1

    """
    日志模块高级用法1 -- 将日志信息同时输出到控制台和文件中
    """
    
    # 导包
    import logging
    
    # 实例化日志器
    logger = logging.getLogger()
    logger.setLevel(level=logging.DEBUG)  # 设置日志级别
    
    # 实例化处理器(多个)
    sh = logging.StreamHandler()  # 控制台
    fh = logging.FileHandler('./info.log')  # 文件
    
    # 实例化格式器(多个, 跟处理器对应)
    fmt1 = '%(asctime)s %(levelname)s [%(name)s] [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s'
    formatter1 = logging.Formatter(fmt=fmt1)
    
    fmt2 = '%(asctime)s %(levelname)s - %(message)s'
    formatter2 = logging.Formatter(fmt=fmt2)
    
    # 将对应的格式器添加给处理器
    sh.setFormatter(formatter1)
    fh.setFormatter(formatter2)
    
    # 将处理器添加给日志器
    logger.addHandler(sh)
    logger.addHandler(fh)
    
    # 调用日志输出, 查看结果
    while True:
        logger.debug('😈😈😈😈😈😈😈😈😈😈😈😈')
    
  • 代码演示–日志模块高级用法2

    """
    日志模块高级用法2:
             每日生成一个日志文件(实际需求)
             每 x 秒生成一个日志文件(伪需求)
    """
    
    # 导包
    import logging.handlers
    
    # 实例化日志器
    logger = logging.getLogger()
    logger.setLevel(level=logging.DEBUG)  # 设置日志级别
    
    # 实例化处理器
    """
    常用参数
    filename : 日志文件存放路径及文件名和后缀
    when : 时间单位(S/M/H/D...)
    interval : 间隔数值
    backupCount : 生成的日志文件总数 
    """
    # # 每日生成一个日志文件(实际需求)
    # th = logging.handlers.TimedRotatingFileHandler(filename='./my_info.log',
    #                                                when='D',
    #                                                interval=1,
    #                                                backupCount=1)
    
    # 每 x 秒生成 x 个日志文件(伪需求)
    th = logging.handlers.TimedRotatingFileHandler(filename='./my_info.log',
                                                   when='S',
                                                   interval=4,
                                                   backupCount=4)
    
    # 实例化格式器
    fmt = '%(asctime)s %(levelname)s [%(name)s] [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s'
    formatter = logging.Formatter(fmt=fmt)
    
    # 将格式器添加给处理器
    th.setFormatter(formatter)
    
    # 将处理器添加给日志器
    logger.addHandler(th)
    
    while True:
        logger.debug('🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄')
    
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值