не может видеть записи, вставленные тестовым примером django - PullRequest
5 голосов
/ 30 июля 2009

Я пытаюсь обеспечить интеграцию в мое приложение django из subversion через хук post commit.

У меня есть тестовый пример django (подкласс unittest.TestCase), который (a) вставляет пару записей в таблицу, (b) порождает svn commit, (c) svn commit запускает ловушку, которая использует мой django модель для поиска информации.

Я использую sqlite3 db. Тест не с использованием: memory: db, он использует реальный файл. Я изменил тестовый код django (для отладки этой проблемы), чтобы избежать удаления тестовой базы данных после ее завершения, чтобы я мог ее проверить.

Тестовый код сбрасывает model.MyModel.objects.all () и записи находятся между (a) и (b).

Когда ловушка срабатывает в точке (c), она также сбрасывает модель, и записи отсутствуют. Когда я проверяю БД вручную после запуска теста, записей нет.

Что-то происходит в тестовой среде django, которая не передает записи в файл db?

Чтобы уточнить : (d) завершить контрольный пример. Таким образом, перехват svn commit запускается до завершения тестового примера и до запуска любого кода очистки django db .

Дополнительная информация : я добавил 15-секундную задержку между (b) и (b), чтобы в середине теста можно было вручную проверить файл db. Записи отсутствуют в файле.

Ответы [ 2 ]

5 голосов
/ 30 июля 2009

Используете ли вы ствол Django? Последние изменения ( Changeset 9756 ) запускают тесты в транзакции, которая затем откатывается. Вот комментарий к регистрации:

Исправлено # 8138 - Изменено django.test.TestCase для отката тестов (когда база данных это поддерживает) вместо промывки и перезагрузки база данных. Это может существенно сократить время, необходимое для запуска большого тестовые наборы.

0 голосов
/ 30 июля 2009

Тестовая среда не сохраняет данные в базу данных, данные очищаются после завершения испытаний.

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