Я все еще использую 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, второй слегка более эффективен.
Вот диаграмма показывающая отношения:
Итак 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), какой из них лучше?