Ответ 1
Если вы абсолютно должны использовать mocks, а не материал Django, о котором говорили другие, я бы рекомендовал Fudge или Mock.
Я собираюсь закончить университетский проект, который включает Python, и моя команда испытывает нехватку тестового примера. Нам нужно больше, и, в частности, нам нужны некоторые тестовые примеры для базы данных. Однако здесь насмехается. Нам нужна библиотека, специфичная для Python, которая может использоваться для издевательства над базой данных, поэтому в тестовых случаях не используется SQL или доступ к реальной базе данных. Мы используем MySQL для реальной базы данных. Для меня немного сложно найти простую в использовании библиотеку Python для издевательств. Что было бы лучшим в наших тестах? Или, есть ли лучший способ протестировать базу данных на Python, не касаясь ее? Я был бы очень признателен за ваш совет. Спасибо: -)
Если вы абсолютно должны использовать mocks, а не материал Django, о котором говорили другие, я бы рекомендовал Fudge или Mock.
Если вы используете django, приборы могут решить вашу проблему. Я не знаю, что вы имеете в виду, насмехаясь над библиотекой, но они позволяют вам заполнять ваш db тестовыми данными. Затем вы можете взаимодействовать с вашим TestCase. Данные теста уничтожаются после каждого TestCase. http://docs.djangoproject.com/en/dev/howto/initial-data/
Лично я склонен писать свои модульные тесты для использования отдельной тестовой базы данных, поэтому обычно у меня есть файл testing.conf
, содержащий информацию о моей базе данных, отдельно от моих обычных файлов development.conf
и/или production.conf
. Это делает мои модульные тесты намного более похожими на фактические условия, при которых код будет выполнен в процессе производства.
Например, недавно я разработал библиотеку Python, для которой пользователь вызывает функцию уровня initialize
на уровне модуля, передавая имя (имена) конфигурационного файла (ов). Затем функция initialize
использует модуль ConfigParser для анализа файлов конфигурации, запускает любые потоки, необходимые для запуска, создает urllib обработчики, устанавливает соединения с базой данных и т.д.
Этот тип настройки позволяет легко тестировать устройство, так как вы можете просто выполнить тесты вашего устройства в своей функции initialize
перед выполнением, передав конфигурацию, указывающую на тестовую базу данных.
Основываясь на некоторых комментариях, похоже, вы используете Django. В этом случае вы захотите использовать прибор данных для заполнения тестовых данных в тестовую базу данных. Отличным ресурсом по этой теме является книга Карен М. Трейси Django 1.1 Тестирование и отладка.
Вот краткое описание того, что вы собираетесь делать:
Сбросьте данные из своей живой базы данных, используя:
python manage.py dumpdata {django-app} --indent 4 >test_data.json
заменив {django-app}
на имя вашего приложения Django.
Поместите test_data.json
в каталог {django-app}/fixtures
Укажите, что ваш тестовый пример должен загружать данные прибора, используя:
Class MyTest(TestCase):
fixtures = ['test_data.json']
def testThisCode(self):
# Test code
Для получения дополнительной информации, помимо книги Карена М. Трейси, вы можете проверить документацию Django на Загрузка приспособлений
Ниже приведены некоторые конкретные примеры использования Mock для тестирования базы данных: