Django тестирование порядка выполнения и таблиц - PullRequest
2 голосов
/ 15 августа 2011

В ситуациях, когда выполняется тест и изменяются тестовые таблицы базы данных, будут ли таблицы базы данных возвращаться в исходное состояние после каждого теста? Если нет, то как я должен знать, в каком порядке выполняются тесты, чтобы я мог прогнозировать состояние таблиц базы данных. Например,

class SimpleTest(Testcase):
    def test_insert(self):
        # testing to see if data correctly added to database

    def test_other_thing(self):
        # does insered data available here?

Ответы [ 2 ]

2 голосов
/ 15 августа 2011

Для правильной изоляции теста, когда тесты касаются базы данных, вам нужно наследовать от django.test.TestCase, который обрабатывает изоляцию состояния базы данных между одним выполнением теста и другим.

Никогда, никогда не зависите от порядка выполнения теста: если вам нужно, вы делаете это неправильно, потому что нарушаете изоляцию теста.

Помните, что вам не нужно использовать только unittest.TestCase или только django.test.TestCase: вы можете смешивать их по мере необходимости (вам не нужно последнее, если ваш тест не касается базы данных).

Обратите внимание, что django.test.TestCase использует транзакции для ускорения очистки состояния базы данных после каждого теста, поэтому, если вам нужно действительно протестировать транзакцию базы данных, вам нужно использовать django.test.TransactionTestCase (см. https://docs.djangoproject.com/en/dev/topics/testing/#testcase)

2 голосов
/ 15 августа 2011

База данных откатывается в конце каждого теста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...