前述:
- 博客系统主要包括登录接口、列表接口、博客详情接口、用户认证接口、编辑接口、作者信息接口。通过开发者工具抓取相关url,使用脑图设计出相关测试样例,对该系统进行接口测试。
脑图
![image]()
测试环境
- 技术栈:pytest框架、request模块、PyYAML模块、jsonSchema模块、allure-pytest模块、logging模块
- 集成开发环境:pycharm
编写测试代码
- 根据上面的脑图,针对每一个接口编写相应的测试代码。
- 统一封装公共属性,提高代码的复用性。
- 为了在测试过程中能够准确发现错误,在utils中加入日志模块,方便直接定位。
- 使用yaml数据管理工具,实现测试数据与代码分离,便于数据管理和维护。
- 通过JSON Schema验证响应格式,确保返回数据的结构正确性。
代码结构展示
![image]()
公共类---utils
- request_util.py:将requests库的功能进行二次封装,提供统一的接口调用方式;通过全局变量host统一管理被测系统的基地址。
- yaml_util.py:提供对YAML格式测试数据文件的读写操作,允许测试过程中动态写入和读取数据。
- 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文件配置,输出详细测试结果
![image]()
- 使用allure在终端生成可视化测试报告
- 命令:
allure generate .\allure-results\ -o .\allure-reports --clean
![image]()
![image]()
- 可以看到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 进行参数化测试,极大地减少代码冗余;实现“测试数据”与“测试逻辑”的分离。
posted @
2026-02-04 23:08
我会替风去
阅读(
0)
评论()
收藏
举报