Day 074 练习题清单
练习 1:TDD 实践 ⭐⭐
用 TDD 方式实现一个购物车类: - 添加商品 - 移除商品 - 计算总价 - 应用折扣 - 清空购物车
要求: - 先写测试,再写实现 - 测试覆盖所有边界情况 - 使用 pytest 运行测试 - 代码通过所有测试
练习 2:参数化测试 ⭐⭐
为以下函数编写参数化测试: - 字符串反转 - 斐波那契数列 - 质数判断
要求: - 使用 @pytest.mark.parametrize - 每个函数至少 5 个测试用例 - 使用 ids 自定义测试名称 - 测试边界情况(空字符串、0、1、负数等)
练习 3:集成测试 ⭐⭐⭐
为一个简单的文件处理系统写集成测试: - 创建临时文件 - 读取文件内容 - 处理文件(转换大小写) - 写入新文件 - 验证结果
要求: - 使用 pytest fixture 管理临时目录 - 测试文件不存在的情况 - 测试权限错误 - 生成测试覆盖率报告
练习 4:异步测试 ⭐⭐⭐
测试一个异步 HTTP 客户端: - 使用 aioresponses 模拟 HTTP 请求 - 测试成功和失败场景 - 测试超时处理 - 测试重试机制
要求: - 安装 aioresponses: pip install aioresponses - 使用 @pytest.mark.asyncio - 测试不同 HTTP 状态码 - 测试网络错误处理
练习 5:完整测试套件 ⭐⭐⭐⭐
为一个 REST API 写完整的测试套件: - 单元测试(工具函数) - 集成测试(数据库操作) - API 测试(端点测试) - 性能测试(响应时间) - 生成覆盖率报告
要求: - 使用 pytest fixture 管理测试数据 - 测试所有 HTTP 方法(GET, POST, PUT, DELETE) - 测试错误处理 - 生成 HTML 覆盖率报告 - 测试代码覆盖率 > 80%
提交要求
- 所有练习的代码文件放在 exercises/ 目录
- 每个文件可以独立运行
- 添加必要的注释和文档字符串
- 包含测试用例和预期输出
- 运行 pytest 通过所有测试