Как запустить модульные тесты django в vim?

Я использую средство запуска тестов носа для vim под названием qtpy, и когда мои тесты просты unittest.TestCase все хорошо, но в тот момент, когда мне нужна база данных, становится ясно, что бегун тестов носа не синхронизирует базу данных перед запуском.

Существует ли средство запуска тестов, которое будет синхронизировать базу данных перед каждым запуском? Если нет, то как люди решают эту проблему, когда запускают тесты django, которые больше похожи на интеграцию?

если это имеет значение, я использую фиктивный файл настроек, поэтому настроен мой DJANGO_SETTINGS_MODULE. Кроме того, файл sqlite db создается и доступен для запуска теста. Но когда нос запускает тест «django», он не синхронизируется с базой данных и приводит к чему-то вроде этого

 23     return Database.Cursor.execute(self, query, params)
 24 DatabaseError: no such table: foo_bar
 25 -------------------- >> begin captured logging << --------------------
 26 django.db.backends: DEBUG: (0.001) CREATE TABLE ROLLBACK_TEST (X INT); args=()
 27 django.db.backends: DEBUG: (0.000) INSERT INTO ROLLBACK_TEST (X) VALUES (8); ar...
 28 django.db.backends: DEBUG: (0.000) SELECT COUNT(X) FROM ROLLBACK_TEST; args=()
 29 django.db.backends: DEBUG: (0.001) DROP TABLE ROLLBACK_TEST; args=()
 30 django.db.backends: DEBUG: (0.000) INSERT INTO "foo_bar" ("first", "last" ...
 31 --------------------- >> end captured logging << -

person Toran Billups    schedule 05.03.2013    source источник


Ответы (2)


Вы используете встроенный в django unittest?

from django.utils import unittest

Юниттест django автоматически удалит и синхронизирует базу данных перед запуском каждого теста.

Похоже, у вас могут возникнуть проблемы с тем, как вы запускаете тест и распознаете ли вы ваш проект и настройки django? Если вы используете unittest django, вы можете легко протестировать свой проект django.

person dm03514    schedule 05.03.2013
comment
Я использую встроенный модульный тест, как вы упомянули, но мой тестовый бегун (qtpy) запускает их с помощью Nousetest, поэтому django не управляет настройкой/разборкой каждого теста. Я ищу плагин, который работает с django (поддержка vim plugin / python или ruby ​​в порядке) -- ИЛИ -- какой-то способ использовать этот qtpy runner с django, который работает с manage.py - person Toran Billups; 05.03.2013

Наконец-то я нашел надежный плагин vim, написанный на python, который работает с django.

https://github.com/JarrodCTaylor/vim-python-test-runner

Для этого требуется только один файл конфигурации в корне вашего проекта (нет необходимости изменять ваш vimrc снова и снова при переключении проектов)

:e .vim-джанго

поместите каждое из имен ваших приложений в список разделителей с запятыми вместе с настройками, с которыми вы хотите, чтобы они работали (например, test / dev / ci / и т. д.)

{"app_name": "website", "environment": "test"}

Вышеприведенное приложение django имеет только одно установленное приложение (веб-сайт), и я хочу запустить все с тестовыми настройками.

Вам также нужно использовать нос в качестве тестового бегуна, поэтому убедитесь, что у вас есть это в настройках для теста.

INSTALLED_APPS += ('django_nose', )
TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
person Toran Billups    schedule 05.09.2013