Я разрабатываю несколько модулей Python, которые используют базу данных mysql для вставки некоторых данных и создания различных типов отчетов. Я занимаюсь разработкой через тестирование и пока что бегаю:
- некоторые тесты CREATE / UPDATE / DELETE для временной базы данных, которая отбрасывается в конце каждого тестового примера, и
- некоторые тесты генерации отчетов, выполняющие исключительно операции только для чтения, в основном SELECT, с копией производственной базы данных, написанной с (действительным, в данном случае) предположением, что некоторые вещи в моей базе данных не изменятся.
Некоторые операции SELECT выполняются медленно, поэтому мои тесты занимают более 30 секунд, что портит процесс разработки через тестирование. Я вижу два варианта:
- помещаю только небольшую часть моих данных в копию производственной базы данных, которую я использую для тестирования генерации отчетов, чтобы тесты проходили достаточно быстро для разработки, управляемой тестами (мне лучше всего подходит менее 3 секунд), или я могу рассмотреть тесты как отказы. Затем мне нужно будет провести отдельное тестирование производительности.
- заполните копию производственной базы данных таким же количеством данных, как и в основной тестовой базе данных, и добавьте код синхронизации, который не проходит тест, если он длится слишком долго.
Я не уверен, какой подход выбрать. Любой совет?