Django - тестирование использования больших таблиц статических данных

Я использую "manage.py тест" наряду с приспособлением JSON, которое я создал использование с помощью 'dumpdata'

Моя проблема состоит в том, что несколько из таблиц в приспособлении являются очень большими (например, один содержащий названия всех городов в США), который делает запущение теста, невероятно замедляются.

При наблюдении, поскольку несколько из этих таблиц никогда не изменяются программой (например, - названия города никогда не должны будут изменяться), не имеет большого смысла создавать и разъединять эти таблицы для каждого тестового прогона.

Существует ли лучший способ протестировать этот код с помощью этого вида данных?

5
задан Michael Bylstra 17 May 2010 в 12:46
поделиться

2 ответа

Это было мое решение:

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 ()

2
ответ дан 15 December 2019 в 06:19
поделиться

Вы должны проверить nose framework. Похоже, у вас будет больше контроля над тем, когда загружать тестовые фикстуры и когда разрывать :

"nose поддерживает фикстуры на уровне пакета, модуля, класса и тестового случая, так что дорогостоящая инициализация может выполняться как можно реже. See Fixtures for more."

Более того, похоже, что есть django плагины для nose : на google

Надеюсь, это поможет.

1
ответ дан 15 December 2019 в 06:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: