在Pytest-Django中处理未管理模型

在Pytest-Django中处理未管理模型

💡 原文英文,约500词,阅读约需2分钟。
📝

内容提要

本文探讨了在Django项目中测试未管理模型的两种方法:一是临时将未管理模型标记为管理,简单但跳过迁移测试;二是手动创建未管理模型,确保迁移测试,但稍显复杂。同时,建议在可能的情况下避免使用transaction=True进行事务测试。

🎯

关键要点

  • 在Django项目中,未管理模型的测试具有挑战性,尤其是在混合使用管理和未管理模型时。
  • 第一种方法是临时将未管理模型标记为管理,简单但会跳过迁移测试。
  • 第二种方法是手动创建未管理模型,确保迁移测试,但稍显复杂。
  • 使用transaction=True进行事务测试时,未管理模型需要特殊处理,因为该选项只会截断管理模型。
  • 可以通过在测试运行期间将未管理模型标记为管理来确保它们被包含在截断中。
  • 在涉及on_commit钩子的场景中,可以通过直接捕获和执行on_commit回调来避免使用transaction=True。
➡️

继续阅读