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

我正在为
django&amp ;;调试一个大的单元测试我想使用我的普通调试工具来做到这一点:

>通过runserver查看django管理员中的数据库
>手动查看数据库.

两者都没有工作,因为unittest没有提交它正在运行测试的db端的事务.

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

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

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

点赞