接口自动化测试报告

前述:

  • 博客系统主要包括登录接口、列表接口、博客详情接口、用户认证接口、编辑接口、作者信息接口。通过开发者工具抓取相关url,使用脑图设计出相关测试样例,对该系统进行接口测试。

脑图

测试环境

  • 技术栈:pytest框架、request模块、PyYAML模块、jsonSchema模块、allure-pytest模块、logging模块
  • 集成开发环境:pycharm

编写测试代码

  1. 根据上面的脑图,针对每一个接口编写相应的测试代码。
  2. 统一封装公共属性,提高代码的复用性。
  3. 为了在测试过程中能够准确发现错误,在utils中加入日志模块,方便直接定位。
  4. 使用yaml数据管理工具,实现测试数据与代码分离,便于数据管理和维护。
  5. 通过JSON Schema验证响应格式,确保返回数据的结构正确性。

代码结构展示

公共类---utils
  1. request_util.py:将requests库的功能进行二次封装,提供统一的接口调用方式;通过全局变量host统一管理被测系统的基地址。
  2. yaml_util.py:提供对YAML格式测试数据文件的读写操作,允许测试过程中动态写入和读取数据。
  3. logger_util.py:多层次日志输出,将不同级别的日志分开存储,便于定位错误。
登陆页面---test_login.py
  • 使用@pytest.mark.order(1)确保登录测试最先执行,成功登录是进行其他页面接口测试的基础。
  • 使用@pytest.mark.parametrize,结合脑图上面的用例,设置不同的条件进行登录测试。
    • 覆盖了各种异常登录场景
    • 新增测试场景只需添加新的参数组合
    • 通过一次定义,多次执行减少重复代码
列表页---test_list.py
  • 验证博客列表接口的正常功能,确保API按预期返回博客数据
  • 验证API的认证授权机制,确保未认证用户无法访问受保护资源
  • 从响应中提取关键数据供后续测试使用,实现测试间的数据传递
详情页---test_detail.py
  • 验证博客详情接口的正常功能,确保API按预期返回博客详细信息
  • 使用@pytest.mark.parametrize,实现了异常场景覆盖
  • 从YAML文件读取登录时生成的token,确保测试在已认证状态下执行
用户认证接口---test_getAuthorInfo.py
  • 补充了博客与作者信息关联的功能验证,完善了用户信息获取的测试覆盖,提供了作者信息查询的专项测试
  • test_getAuthorInfo验证在拥有合法 token 和有效 blogId 时,接口能返回正确的数据
  • 通过 @pytest.mark.parametrize 进行了等价类与边界值分析,测试了空值、负数、中文字符、超长数字等异常输入
编辑接口---test_add.py
  • 验证博客添加功能的完整性和正确性,确保用户能够成功创建新博客
  • 通过参数化测试覆盖各种边界条件,确保系统对异常输入的正确处理
  • 验证富文本内容(链接、图片等)的正确处理,确保系统对各种内容格式的支持
  • 验证标题和内容不能为空的业务规则,确保数据验证逻辑的正确性
用户信息接口---test_getUserInfo.py
  • 验证用户信息获取功能的完整性和正确性,确保用户能够成功获取自己的账户信息
  • 验证API的认证授权机制,确保未认证用户无法访问用户信息
  • 验证用户信息获取的业务规则,确保数据验证逻辑的正确性

测试结果展示

  • 配置好pytest.ini文件配置,输出详细测试结果

  • 使用allure在终端生成可视化测试报告

    • 命令:allure generate .\allure-results\ -o .\allure-reports --clean
  • 可以看到32个测试用例全部通过,通过率百分百。

小结

  • 进行测试时需要关注代码执行的顺序,使用pytest-order第三⽅插件,控制测试用例的执⾏顺序。
    • 在test_login.py中使用@pytest.mark.order(1)--->访问任何接口都应该先进行登录,确保信息的隐私性。
  • 使用jsonschema对返回的数据格式进行校验,提高测试的效率和质量。
  • 测试阶段修改pytest.ini的配置为[pytest] addopts = -vs,输出具体的测试结果到终端,便于测试人员快速定位测试中出现的问题。
  • 完成测试后修改配置为[pytest] addopts = -vs --alluredir allure-results,并配合命令allure generate .\allure-results\ -o .\allure-reports --clean输出测试报告。
  • 使用简单的YAML文件存储关键数据,通过read_yaml和write_yaml函数统一管理数据存取,在测试开始前清空YAML文件防止数据污染。
  • 在编写某个测试接口的相关代码前,可以使用postman预测,确保接口地址的准确性。
  • 使用@pytest.mark.parametrize 进行参数化测试,极大地减少代码冗余;实现"测试数据"与"测试逻辑"的分离。