我正在尝试使用Django进行测试驱动开发。我的问题是我需要在运行测试之前在数据库中添加一些东西,例如许多用户,部门和他们的权限。我尝试使用fixture来做到这一点,但我发现整个过程非常不直观(我也发现当我删除并重新同步我的数据库时,我的用户设备被破坏了,因为权限只能通过id引用)!
我已经搜索了这个预测试数据库初始化的其他解决方案,但我只能找到在TestCase类的setUp方法中执行初始化的非常简单的情况。当你拥有一个具有不同用户和权限的应用程序时,我并不真的可以使用这些方法。
在开始大型应用程序的测试之前,您能告诉我如何填充数据库吗?除了fixtures和setUp类之外还有更好的方法吗?
答案 0 :(得分:6)
模型工厂(以及factory_boy或model_mommy等工具)是更好的选择。
根据Carl Mayer关于“测试和Django”的slides,灯具是:
最好使用模型工厂,为什么?
就个人而言,我几乎在每个django项目中都使用factory_boy进行测试。值得一试,看一看。
另见,见: