Восстановление тестовой базы данных для модульного тестирования в Neo4j - PullRequest
0 голосов
/ 04 мая 2020

Я хотел бы провести модульное тестирование операций CRUD для предварительно заполненной базы данных Neo4j.

Я думаю, что один из способов сделать это может быть:

  • Создать пустая база данных (назовем ее testDB)
  • Создать резервную копию базы данных (назовем ее testingBackup)
  • При выполнении тестов:
    • Удалить любые данные из testDB
    • Заполнить testDB из testingBackup
    • Запустить запросы модульных тестов для теперь заполненного testDB

Я в курсе функций резервного копирования / восстановления, функций загрузки / выгрузки и экспорта в csv / load из csv et c. Однако я не уверен, какой из них будет наиболее подходящим для использования и может быть наиболее легко автоматизирован. Я нахожусь на Ubuntu и использую python.

Мне нужно было бы иметь возможность быстро и легко изменять данные резервного копирования по мере развития приложения.

Какой наилучший подход для этого, пожалуйста

1 Ответ

0 голосов
/ 04 мая 2020

У меня есть нечто похожее на купол, с некоторыми оговорками. Я провел такие тесты, используя Java и testcontainers. Кроме того, я не использовал neo4j. Я использовал postgress, sqlserver и mongodb для своих тестов. Использование той же техники для neo4j должно быть похоже на один из них. Я опубликую ссылку на мои примеры на github для mongodb / springboot / java. Взгляните.

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

В вашем примере нет резервного копирования. Только CSV-файл с данными.

-Ваш тест раскручивает тестовый контейнер с neo4j из вашего теста (это ваш testdb).

-Загрузите CSV в этот контейнер.

- получите ip, порт, пользователь, пароль тестконтейнера (эта часть зависит от типа образа базы данных, доступного для тестконтейнеров. Некоторые образы позволяют вам задать свой собственный порт, идентификатор пользователя и пароль. Некоторые из них не будут.)

-передайте эти данные в ваше приложение и запустите его (я не уверен, как эта часть будет работать для python приложения. Здесь вы сами. См. ссылку на блог, который я нашел для примера с python / testcontainer ниже. Я использовал приложение Spring-Boot. Вы можете увидеть мой код в github)

- как только закончите, выполните запросы к контейнеру neo4j и подтвердите.

- когда тест закончится, контейнер Удалите вместе с данными.

- в файл CSV внесено любое изменение, которое может создать новый сценарий ios для вашего теста.

- при необходимости создайте другой файл / тест CSV.

Вот ссылки, * 1 023 *

https://www.testcontainers.org/

testcontainers Модуль neo4j https://www.testcontainers.org/modules/databases/neo4j/

Блог с подробным описанием тестконтейнеров и python. https://medium.com/swlh/testcontainers-in-python-testing-docker-dependent-python-apps-bd34935f55b5

Моя ссылка на github на примеры mongodb / springboot и sqlserver / springboot. На днях я добавлю также образец neo4j. https://github.com/snarasim123/testcontainers

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...