3

我正在为 django 调试一个大型单元测试测试,并且想使用我的常规调试工具来完成它:

  1. 通过runserver查看django admin中的db
  2. 手动查看数据库。

两者都不起作用,因为 unittest 尚未提交它正在运行测试的 db 端的事务。

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

4

1 回答 1

8

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

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

于 2012-04-17T08:33:00.753 回答