Я использую "manage.py тест" наряду с приспособлением JSON, которое я создал использование с помощью 'dumpdata'
Моя проблема состоит в том, что несколько из таблиц в приспособлении являются очень большими (например, один содержащий названия всех городов в США), который делает запущение теста, невероятно замедляются.
При наблюдении, поскольку несколько из этих таблиц никогда не изменяются программой (например, - названия города никогда не должны будут изменяться), не имеет большого смысла создавать и разъединять эти таблицы для каждого тестового прогона.
Существует ли лучший способ протестировать этот код с помощью этого вида данных?
Это было мое решение:
class xxxx(TestCase):
def setUp(self):
import _mysql
db=_mysql.connect('xxxx', 'xxxx', 'xxxx', "test_xxxxxxx")
db.query(open('sql/xxxxxx.sql').read())
Файл sql представлял собой последовательность операторов вставки, которые я экспортировал с помощью phpMyAdmin. Чтение операторов sql происходит намного быстрее, чем импорт фикстуры JSON или YAML. Это, конечно, не самое элегантное решение, но оно сработало.
Согласно третьему ответу в Загрузка дампа SQL перед запуском тестов Django , вам просто нужно перетащить этот файл sql в каталог sql внутри каталога приложения. У меня это сработало для производственной базы данных при выполнении «manage.py syncdb», но по какой-то причине эти данные фактически не были импортированы в тестовую базу данных при выполнении «manage.py test», хотя строка «Установка пользовательского SQL для xxxx.xxxx model ». Итак, я написал свой собственный код внутри setUp ()
Вы должны проверить nose framework. Похоже, у вас будет больше контроля над тем, когда загружать тестовые фикстуры и когда разрывать :
"nose поддерживает фикстуры на уровне пакета, модуля, класса и тестового случая, так что дорогостоящая инициализация может выполняться как можно реже. See Fixtures for more."
Более того, похоже, что есть django плагины для nose : на google
Надеюсь, это поможет.