博客
关于我
Python3+Requests+Unittest实战系列【二】
阅读量:797 次
发布时间:2023-03-08

本文共 2464 字,大约阅读时间需要 8 分钟。

接口自动化测试框架设计与实现

前言

本文介绍了基于Python3+requests+unittest框架的接口自动化测试解决方案。该框架针对传统实现中数据管理不便、用例管理混乱等问题进行了优化设计。本文将从框架设计到实现详细阐述,并提供相关代码链接:GitHub - zhangying123456/python3_interface: 接口自动化测试框架设计到开发。

代码框架展示

框架采用模块化设计,主要包含以下功能模块:

  • case模块:存储测试用例数据,包括请求类型(get/post)、URL、headers、请求参数等。
  • data模块:提供数据获取功能,支持从Excel文件中提取表格数据,处理数据依赖关系等。具体实现包括:get_data.py(数据提取)、dependent_data.py(依赖数据处理)、data_config.py(Excel初始化)。
  • dataconfig模块:存储与接口请求相关的常用数据,如headers、cookies等。
  • log模块:用于存储测试执行后的日志文件,便于问题定位。
  • main模块:框架的核心执行模块run_test.py,负责整体测试流程管理。
  • util模块:通用工具包,包含断言方法、Excel操作、数据处理等功能,具体包括:common_assert.py(断言工具)、operation_excel.py(Excel文件操作)、operation_header.py(请求头处理)、operation_json.py(JSON数据处理)、print_log.py(日志输出)、runmethod.py(请求类型切换)、send_mail.py(测试结果发送邮件)。
  • 代码实现说明

    框架设计重点解决了接口测试数据的管理问题,主要实现步骤如下:

  • 用例数据管理

    • 用例数据存储在Excel文件中,支持多维度数据管理,便于不同测试用例间的依赖关系处理。
    • 通过get_data_value方法从Excel中动态获取用例数据,支持空值处理。
    • 数据获取逻辑如下:
      def get_data_value(self, row):    data = self.data.get_data_value(row)    if not data:        return None    return data
  • 依赖数据处理

    • 检测用例间是否存在依赖关系。
    • 通过run_dependent方法执行依赖测试用例,提取响应数据。
    • 示例:
      def run_dependent(self):    row_num = self.oper_excel.get_row_num(self.case_id)    request_data = self.data.get_data_value(row_num)    header = self.data.get_request_header(row_num)    method = self.data.get_request_method(row_num)    url = self.data.get_request_url(row_num)    res = self.method.run_main(method, url, request_data, header)    return res
  • 请求处理逻辑

    • 根据请求类型执行get或post请求。
    • 请求参数处理逻辑如下:
      def run_main(self, method, url, data=None, header=None, params=None):    if method == 'post':        return self.post_main(url, data, header)    else:        return self.get_main(url, params, header)
  • 异常处理

    • 在请求过程中,若发生异常将错误日志写入log.txt文件,并继续执行后续测试用例。
    • 实现方式如下:
      try:    # 具体请求逻辑except Exception as e:    with open(log_file, 'a', encoding='utf-8') as f:        f.write(f"第{i}条用例报错:\n{str(e)}\n")    initLogging(log_file, e)    fail_count.append(i)
  • 日志记录

    • 使用print_log.py模块将测试过程中的关键信息输出到log.txt文件。
    • 内容示例:
      def write_cookie(self):    cookie = requests.utils.dict_from_cookiejar(self.get_cookie())    print(f"写入cookie:{cookie}")    with open(log_file, 'a', encoding='utf-8') as f:        f.write(f"写入cookie:{cookie}\n")
  • 测试结果发送

    • 测试完成后,通过send_mail.py模块将测试结果以邮件形式发送给相关人员。
    • 邮件内容包括:通过率、失败率、未执行率等统计信息及日志附件。
  • 框架优势

  • 数据管理清晰:用例数据与业务数据分离,便于管理和维护。
  • 请求处理灵活:支持get和post等多种请求类型及参数处理。
  • 强大的日志功能:支持日志定位,便于问题快速解决。
  • 可扩展性强:支持不同类型的数据源(如Excel、JSON等),适用于复杂场景。
  • 总结

    本文详细介绍了基于Python3+requests+unittest框架的接口自动化测试解决方案,涵盖了框架设计、实现细节及实际应用场景。通过模块化设计和灵活配置,该框架能够高效解决接口自动化测试中的常见问题,适用于多种实际项目场景。

    转载地址:http://kylfk.baihongyu.com/

    你可能感兴趣的文章
    Python变量命名方法-ChatGPT4o作答
    查看>>
    Python变量与运算符
    查看>>
    Python变量/运算符/函数/模块/string
    查看>>
    python发送邮件的时候出现 error (535, b‘5.7.3 Authentication unsuccessful‘) 解决方法
    查看>>
    python系列【仅供参考】:python flask框架 debug功能
    查看>>
    python发送notes邮件_使用python在Lotus Notes中发送邮件
    查看>>
    Python双版本下创建一个Scrapy(西瓜皮)项目
    查看>>
    Python双版本下No module named 'requests'
    查看>>
    python及pycharm2018软件安装教程
    查看>>
    python去重txt文本_Python实现的txt文件去重功能示例
    查看>>
    python去掉列表的逗号,从Python列表项中删除标点符号
    查看>>
    Python卸载所有包
    查看>>
    python单线程下实现多个socket并发
    查看>>
    Python单元测试框架介绍(超详细~)
    查看>>
    Python单元测试框架
    查看>>
    python单元测试之unittest
    查看>>
    Python单元测试unittest实战
    查看>>
    Python单元测试-模拟VS补丁
    查看>>
    python协程实时输出_Python 协程以及事件循环的问题,怎么知道 IO 读取结束了呢?...
    查看>>
    Python十进制&;包提供错误的结果
    查看>>