2010-05-17 2 views
4

Я использую «manage.py тест» вместе с JSON арматурой, созданными с помощью использования «» dumpdataДжанго - тестирование с использованием больших таблиц статических данных

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

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

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

ответ

1

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

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. Это, безусловно, не самое изящное решение, но оно сработало.

Согласно третьему вопросу в Loading SQL dump before running Django tests, вам просто нужно отбросить этот sql-файл в каталоге «sql» внутри каталога приложения. Это работало для меня для производственной базы данных при выполнении «manage.py syncdb», но по некоторым причинам эти данные фактически не импортировались в тестовую базу данных при выполнении «теста управления.py», хотя строка «Установка пользовательского SQL для xxxx.xxxx "появилась на выходе. Итак, я написал свой собственный код внутри setUp()

0

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

"nose supports fixtures at the package, module, class, and test case level, so expensive initialization can be done as infrequently as possible. See Fixtures for more."

Кроме того, похоже, что есть Джанго плагины для носа: on google

Надеется, что это поможет.

+0

Спасибо. Мне удалось получить нос, работая как тест-бегун, используя плагин django-nose. Однако у меня было слишком много проблем с решением проблемы с использованием носа. Я не думаю, что у него есть возможность использовать некоторые таблицы в производственной базе данных, что в конечном итоге является тем, что мне нужно. –

Смежные вопросы