对你的 Django 管理站点进行冒烟测试

  • 日期及更新信息:2025 年 3 月 14 日更新了代码片段,包含导入并删除了一些未使用的内容,感谢 Andy!
  • 关于测试的观点:是代码库最重要的资产,对于辅助服务如管理站点或命令行界面的测试,倾向于请求原谅多于请求许可,Django 的管理站点也一样,因其管理 DSL 较“魔法字符串”式,很多问题在被 CS 代理告知前不会被 CI 或 mypy 捕获。
  • 示例代码

    • 定义了StripeCustomer模型和StripeCustomerAdmin管理类。
    • 实现了一个参数化测试test_can_render_route,用于确保每个管理视图都能渲染空状态。通过extract_routes函数提取 Django 管理站点的路由,is_django_admin_route函数判断是否为管理更改列表路由,然后使用pytestparametrize对这些路由进行测试,确保登录后的超级用户访问这些路由时状态码为 200。
  • 相关细节

    • extract_routes实现看起来复杂但借鉴自django-typescript-routesdjango-js-reverse,使用了一些索引操作且运行良好一段时间。
    • 测试的 fixture 和parametrize假设使用pytest,可轻松改写为使用subTest
阅读 10
0 条评论