Поиск библиотеки Python для извлечения базы данных

Я собираюсь закончить университетский проект, который включает Python, и моя команда испытывает нехватку тестового примера. Нам нужно больше, и, в частности, нам нужны некоторые тестовые примеры для базы данных. Однако здесь насмехается. Нам нужна библиотека, специфичная для Python, которая может использоваться для издевательства над базой данных, поэтому в тестовых случаях не используется SQL или доступ к реальной базе данных. Мы используем MySQL для реальной базы данных. Для меня немного сложно найти простую в использовании библиотеку Python для издевательств. Что было бы лучшим в наших тестах? Или, есть ли лучший способ протестировать базу данных на Python, не касаясь ее? Я был бы очень признателен за ваш совет. Спасибо: -)

Ответы

Ответ 1

Если вы абсолютно должны использовать mocks, а не материал Django, о котором говорили другие, я бы рекомендовал Fudge или Mock.

Ответ 2

Если вы используете django, приборы могут решить вашу проблему. Я не знаю, что вы имеете в виду, насмехаясь над библиотекой, но они позволяют вам заполнять ваш db тестовыми данными. Затем вы можете взаимодействовать с вашим TestCase. Данные теста уничтожаются после каждого TestCase. http://docs.djangoproject.com/en/dev/howto/initial-data/

Ответ 3

Лично я склонен писать свои модульные тесты для использования отдельной тестовой базы данных, поэтому обычно у меня есть файл testing.conf, содержащий информацию о моей базе данных, отдельно от моих обычных файлов development.conf и/или production.conf. Это делает мои модульные тесты намного более похожими на фактические условия, при которых код будет выполнен в процессе производства.

Например, недавно я разработал библиотеку Python, для которой пользователь вызывает функцию уровня initialize на уровне модуля, передавая имя (имена) конфигурационного файла (ов). Затем функция initialize использует модуль ConfigParser для анализа файлов конфигурации, запускает любые потоки, необходимые для запуска, создает urllib обработчики, устанавливает соединения с базой данных и т.д.

Этот тип настройки позволяет легко тестировать устройство, так как вы можете просто выполнить тесты вашего устройства в своей функции initialize перед выполнением, передав конфигурацию, указывающую на тестовую базу данных.

Ответ 4

Основываясь на некоторых комментариях, похоже, вы используете 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 на Загрузка приспособлений