Я все еще использую Django 1.2.1, и я думаю, что с новым Django мы не делаем import unittest
, а затем делаем unittest.TestCase
.разница между django.test.TestCase vs unittest vs django.utils.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), какой из них лучше?
Я создал приложение django, и у меня есть в моем файле test.py, наследующий класс от * TestCase *, и я только импортировал * TestCase * из * django.test *. Если я импортирую * unittest.TestCase *, это будет конфликт? – eLRuLL
@eLRuLL да, но вы могли бы сделать «из django.test import TestCase как DjangoTestCase» или что-то подобное, чтобы разрешить конфликт –
отличный совет, я этого не знал. – eLRuLL