2

我正在尝试使用 Django 进行测试驱动开发。我的问题是在运行测试之前我需要在数据库中添加一些东西,例如一些用户、部门和他们的权限。我尝试使用固定装置来做到这一点,但我真的发现整个过程非常不直观(我还发现当我删除并重新同步我的数据库时,我的用户固定装置被破坏了,因为权限仅通过 id 引用)!

我已经搜索了这个预测试数据库初始化的其他解决方案,但我只能找到在 TestCase 类的 setUp 方法中执行初始化的非常简单的情况。当您的应用程序具有不同的用户和权限并且都需要测试时,我真的不认为可以使用这些方法。

您能告诉我在开始测试大型应用程序之前如何填充数据库吗?除了fixtures和setUp class还有什么更好的方法吗?

4

1 回答 1

6

模型工厂(以及 factory_boy 或 model_mommy 等工具更好的选择。

根据 Carl Mayer关于“测试和 Django”的幻灯片,固定装置是:

  • 难以维护和更新。
  • 增加测试相互依赖。
  • 加载缓慢。

用模型工厂比较好,为什么呢?

  • 测试代码的本地测试数据(显式)。
  • 易于维护。
  • 不要创建该测试不需要的任何数据。
  • 即使对于大型/复杂的测试数据集(辅助函数)也能很好地工作。

就个人而言,我几乎在每个 django 项目中都使用factory_boy进行测试。值得一试,看看。

另见:

于 2013-08-05T07:12:11.520 回答