首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django.test.TestCase与单元测试与django.utils.unittest.TestCase之间的差异

django.test.TestCase与单元测试与django.utils.unittest.TestCase之间的差异
EN

Stack Overflow用户
提问于 2012-04-09 01:32:27
回答 1查看 7K关注 0票数 20

我仍然在使用Django 1.2.1,我认为在较新的Django中,我们不需要先使用import unittest,然后再使用unittest.TestCase

插图

代码语言:javascript
复制
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.unittestdjango.test继承自unittestunittest2

我不确定下面的内容是否正确。请帮助编辑。

代码语言:javascript
复制
 ________________________________________________________________
|  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之前),哪一个更好?

EN

回答 1

Stack Overflow用户

发布于 2012-05-17 23:27:05

Django的TestCase通过一些额外的特性增强了unittest.TestCase

为了测试诸如重定向和表单错误之类的东西,fixtures.

  • Wraps

  • 自动加载instance.

  • Django-specific断言中的
  • 每个测试。

一般来说,您最有可能使用的是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,而不是运行迁移。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10064846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档