SuperAPI AI 工具集

django-tdd

测试与质量

查看项目

更新于 10-15 08:34

技能介绍

用途

django-tdd 用于在 Django 项目中实施测试驱动开发(TDD),并围绕 pytest、factory_boy 和 Django REST Framework(DRF)组织测试代码。技能描述中明确的激活场景包括:编写新的 Django 应用、实现 DRF API、测试 Django 模型/视图/序列化器,以及为 Django 项目搭建测试基础设施。

主要能力

  • TDD 工作流:以 Red-Green-Refactor 循环组织开发,先写失败测试,再实现使其通过,最后在测试保持通过的前提下重构。
  • pytest 配置:提供 pytest.ini 示例,包含 DJANGO_SETTINGS_MODULE、testpaths、python_files/python_classes/python_functions、addopts(--reuse-db、--nomigrations、--cov、--cov-report、--strict-markers)以及 slow、integration 标记。
  • 测试设置:提供 config/settings/test.py 示例,使用内存 SQLite、通过 DisableMigrations 关闭迁移、使用 MD5PasswordHasher 加速密码哈希、控制台邮件后端,以及 Celery 的 eager 设置。
  • 夹具(fixtures):conftest.py 中定义 timezone_settings、user、admin_user、authenticated_client、api_client、authenticated_api_client 等夹具。
  • factory_boy 工厂:提供 UserFactory、CategoryFactory、ProductFactory 及 post_generation 处理标签等示例,并使用 fuzzy 生成价格与库存。
  • 模型测试:覆盖用户创建/超级用户、字符串表示、产品创建、slug 生成、价格校验、管理器 active 方法、库存扣减与不足时抛出异常。
  • 视图测试:覆盖列表、详情、登录要求、认证后创建页访问,以及 POST 创建产品。
  • DRF 测试:覆盖序列化/反序列化、价格与库存校验、API 列表/详情/未授权创建/授权创建/更新/删除、按价格过滤与搜索。
  • Mocking 与 patching:使用 unittest.mock 的 patch、Mock 模拟外部支付服务(如 Stripe),验证成功与失败支付路径。

使用方式

按技能提供的示例,将 pytest.ini、测试设置、conftest.py 与工厂文件放入项目对应位置,然后在测试中引用夹具与工厂编写模型、视图、序列化器与 API 测试。技能中的代码示例可直接作为项目测试结构的参考。

适用场景

需要为 Django 项目建立测试体系、用 TDD 方式开发 Django 应用与 DRF API、或对模型与视图行为进行回归验证时适用;也适用于需要模拟外部服务(如支付网关)的测试场景。

限制

除技能文本中提供的示例外,关于具体的版本兼容、收费、价格、平台支持范围、实际运行效果等信息暂未提供。