如何让Django unittest提交/保存数据到数据库

时间:2012-04-17 08:20:36

标签: python django unit-testing

我正在调试django& amp;的大型单元测试我想使用我的常规调试工具来完成它:

  1. 通过runserver
  2. 查看django admin中的数据库
  3. 手动查看数据库。
  4. 两者都没有工作,因为unittest没有提交它正在运行测试的数据库端的事务。

    显而易见的解决方案似乎是告诉unittest不要使用事务,或让它以某种方式提交。另一种方法是创建一个自定义设置文件,让runserver连接到事务。但第一个想法似乎应该很容易。有任何想法吗?我正在使用MySQL& django 1.3.1

1 个答案:

答案 0 :(得分:7)

考虑使用TransactionTestCase作为测试用例的父类,而不是TestCaseTransactionTestCase不使用TestCase的事务行为,因此您可以在需要检查数据库状态的位置提交。

此外,如果您的单元测试太大,以至于您需要在运行时检查其数据库状态,那么您可能做错了。单元测试应该只测试一件事和一件事,而且状态在任何时候都应该是相当明显的。请参阅Carl Meyer的Pycon 2012关于testing in Django的讨论,以获得关于编写良好单元测试的一些很好的建议。