2014-09-18 2 views
3

Я близок к завершению ORM для RethinkDB на Python, и я застрял в написании тестов. В частности, при использовании save(), get() и delete() операций. Каков рекомендуемый способ проверить, выполняет ли мой ORM то, что он должен делать при сохранении или удалении или получении документа?Тестирование ORM для RethinkDB

Прямо сейчас, для каждого теста в моем пакете я создаю базу данных, заполняю ее всеми таблицами, необходимыми тестовыми моделями (это занимает много времени, почти 5 секунд/тест!), Запустите операцию на моей модели (например: save()), а затем вручную запустить запрос к базе данных (используя драйвер Python от RethinkDB), чтобы узнать, все ли обновлено в базе данных.

Теперь я чувствую, что это не так; возможно, есть еще один способ написать эти тесты или, возможно, я смогу разработать тесты, даже не выполнив столько запросов к базе данных. Любая идея о том, как я могу улучшить это или предложение о том, как это должно быть действительно сделано?

ответ

3

Вы можете создать все свои базы данных/таблицы только один раз для всех своих тестов.

Вы также можете использовать необработанный каталог данных: - Начало RethinkDB - Создать все ваши базы данных/таблицы - Зафиксируйте его.

Перед каждым испытанием скопируйте каталог данных, запустите RethinkDB на копии, затем, когда ваш тест будет выполнен, удалите скопированный каталог данных.

+0

Каждый набор тестов будет иметь свои собственные модели, следовательно, их собственные таблицы, поэтому я не могу и не должен иметь одну и ту же базу данных/таблицы для всех моих тестов. Кроме того, я запустил RethinkDB, а затем запустил все тесты, я не думаю, что это хорошая ставка, чтобы начать и остановить RethinkDB для каждого теста - убой производительности, вероятно, будет таким же в моем текущем случае. – linkyndy

+0

Одним из способов получить немного времени было бы просто очистить таблицы, а не отбрасывать/воссоздавать их. Я тоже поддерживаю ORM, и я просто бросаю/создаю таблицы, и я должен признать, что это немного медленно. – neumino

+0

Я знаю, и ты отлично справился с этим! :) Хорошо, тогда хорошо знать, что у коллег-кодеров одинаковый подход ... И каково ваше мнение по моей другой проблеме, касающейся метода тестирования? Как вы проверяете, выполняют ли ваши действия модели то, что они должны делать? – linkyndy

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