Как настроить карате после сценария в файле karate-config. js - PullRequest
1 голос
/ 20 апреля 2020

Я использую каратэ '* configure afterScenario =' в файле возможностей и , получаю результаты успешно и могу также вызывать вызовы из БД. Как реализовать то же самое в Karate-config. js?

Примечание: у меня также есть вызов класса Java.

Любая реализация, подобная этой?

Код используется в файле функций

Background:
* def inFluxDb = Java.type('aPITests.InfluxDBCall');
* def dbCDB = new inFluxDb();
* configure afterScenario = 
"""
function(){
  var info = karate.info; 
  karate.log('after', info.scenarioType + ':', info.scenarioName);
  karate.log('after', info.scenarioType + ':', info.errorMessage);
  karate.log('after', info.scenarioType + ':', info.featureDir);
  karate.log('after', info.scenarioType + ':', info.featureFileName);
  karate.log('after', info.scenarioType + ':', info.scenarioDescription);
  var featurenameupdate = info.featureFileName.substring(0, info.featureFileName.length-8);
  var status="Fail";
  if(!info.errorMessage){
  status="Pass";
  }
  dbCDB.DBConnection( "http://localhost:8086", "root", "root");
  dbCDB.DBwrite( featurenameupdate, info.scenarioName, info.errorMessage, status );
  dbCDB.connectionClose();
}
"""

Обновление: проблема после использования karate.configure

Сценарий: у меня есть два файла функций

Feature1: API) содержит теги @smoke @test

Feature2 : UI) содержит @dropdown @ Angular

Мой * def configure afterScenario объявлен в файле Feature2. При выполнении только теста @smoke мой karate.configure('afterScenario', 'UI.feature'); не загружается.

, как и ожидалось или что-нибудь нужно обновить с моего конца?

1 Ответ

1 голос
/ 20 апреля 2020

Используйте API karate.configure() для перемещения любого шага configure функции в конфигурацию JS.

karate.configure('afterScenario', read('some.feature'));

Я не рекомендую "раздутый" ваш karate-config.js, если в этом нет крайней необходимости, потому что он вызывается для каждой строки Scenario или Examples. Попробуйте вместо этого использовать ExecutionHook.

...