我仍然在使用Django 1.2.1,我认为在较新的Django中,我们不需要先使用import unittest,然后再使用unittest.TestCase。
插图
import unittest
class TestThis(unittest.TestCase):
from django.utils.unittest import TestCase
class TestThis(TestCase):
from django.test import TestCase
class TestThis(TestCase):根据PyCon2011 talk的说法,第二种方法是稍微更有效。
下面是显示这些关系的diagram:

因此,django.utils.unittest和django.test继承自unittest或unittest2。
我不确定下面的内容是否正确。请帮助编辑。
________________________________________________________________
| Name | Django Version | Python Version |
-----------------------------------------------------------------
| unittest | >= 1.0 | >= 2.6 |
-----------------------------------------------------------------
| django.utils.unittest | >= 1.3 | ?? |
-----------------------------------------------------------------
| django.test | >= 1.0 | >= 2.6 |
| - SimpleTestCase >= 1.4 >= 2.7 |
| - LiveServerTestCase >= 1.4 >= 2.7 |
-----------------------------------------------------------------就效率而言,三者中哪一个更好?许多Django开发人员在测试时会嘲笑,所以有时甚至不需要数据库。有没有办法在运行manage.py test myapp.MyClass时不创建表?对于旧版本(1.3之前),哪一个更好?
发布于 2012-05-17 23:27:05
Django的TestCase通过一些额外的特性增强了unittest.TestCase:
为了测试诸如重定向和表单错误之类的东西,fixtures.
一般来说,您最有可能使用的是Django的TestCase子类。通常这将是django.test.TestCase,为了提高效率,它将测试包装在数据库事务中,并使用回滚在数据库中“撤消”测试。如果您需要在测试中手动管理事务,则需要使用django.test.TransactionTestCase,因为您不能在事务中启动/回滚事务。
使用django.test.TestCase需要注意一些小问题,有关更多信息,请参阅备注here。
另外:
如果您只是在寻找一种更快地运行测试的方法,那么可以查看一下running your tests in memory,并且(如果您使用的是South),将SOUTH_TESTS_MIGRATE = False设置为告诉South在创建测试DB时使用(快得多的) syncdb,而不是运行迁移。
https://stackoverflow.com/questions/10064846
复制相似问题