Правильный способ посева MongoDB для автоматического тестирования с каратэ - PullRequest
0 голосов
/ 13 февраля 2019

Я создаю автоматизированный испытательный стенд API и выбрал Каратэ для этой работы.Жаль, что его движок написан для экосистемы Java, где поддержка сообществом технологии mongoDB не так сильна, как для NodeJS

, поскольку мне нужно заполнять / очищать БД в среде QA для выполнения тестов, но я простосценарий заполнения, созданный с использованием NodeJS и определенной библиотеки, поэтому теперь у меня есть два варианта

  1. Продолжайте использовать сценарий инициализации NodeJS, где моя БД заполняется до выполнения тестов каратэ

  2. Используйте библиотеку заполнения Java, которая позволяет загружать данные из файлов (например, JSON) или из дампов БД, и выполнять заполнение перед каждой функцией с помощью перехватчиков JUnit

Обе альтернативыдолжен включить devs / qas для создания нескольких приборов и выбрать, какой из них подходит для определенного набора тестов функций.Например, в сценарии № 1 я мог бы написать сценарий sh, который выполняет

npm run seed
mvn clean test

Но ему не хватает контроля со стороны qa, какие данные загружать (если вы не укажете это в этом сценарии оболочки, которыйозначает, что он должен часто обновляться и должен «знать», какие функции реализованы и когда их запускать).Другим недостатком является то, что на сервере CI должен быть установлен nodeJS, а конфигурация конвейера должна знать об этом, а на серверах CI не должно быть много инструментов, установленных на

Любой совет?Спасибо

1 Ответ

0 голосов
/ 13 февраля 2019

Благодаря взаимодействию с Java вам будет очень просто вызывать команду ОС из каратэ.

* def FileUtils = Java.type('com.intuit.karate.FileUtils')
* def runtime = java.lang.Runtime.getRuntime()
* def exec = function(cmd){ return FileUtils.toString(runtime.exec(cmd).getInputStream()) }
* def result = exec('my-nodejs-cli-command')

И у вас есть все возможности переключения env, например, вы можете использовать переменные какаргумент exec().

Нет ли у MongoDB способов вызвать его через REST.Потому что каратэ хорошо справляется с REST-запросами:)

...