Как интегрировать каратэ с тестрейлом

Я новичок в Java и использую каратэ для автоматизации API. Мне нужна помощь, чтобы объединить тестрейл с каратэ. Я хочу использовать теги для каждого сценария, которые будут идентификатором тестового примера (из testrail), и я хочу выдвинуть результат "после сценария".

Кто-нибудь может направить меня в этом? Фрагменты кода будут более ценными. Спасибо!

2 ответа

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

В первую очередь следует скачатьAPIClient.javaиAPIException.javaфайлы по ссылке ниже.

TestrailApi на гитхабе

Затем вам нужно добавить эти файлы по следующему пути в вашем проекте. Например:YourProjectFolder/src/main/java/testrails/

В вашем файле karate-config.js после каждого теста вы можете отправлять теги кейсов, результаты тестов и сообщения об ошибках в файл BaseTest.java, о котором я вскоре расскажу.

karate-config.js file

      
function fn() {

  var config = {
    baseUrl: 'http://111.111.1.111:11111',
  };
        
    
  karate.configure('afterScenario', () => {
    try{
         const BaseTestClass = Java.type('features.BaseTest');
         BaseTestClass.sendScenarioResults(karate.scenario.failed, 
         karate.scenario.tags, karate.info.errorMessage);
        }catch(error) {
       console.log(error)
       }
    });
      
   return config;
}

Пожалуйста, не забудьте указать тег для сценария в файле Feature. Например @1111

      
Feature: ExampleFeature

  Background:
    * def conf = call read('../karate-config.js')
    * url conf.baseUrl

  @1111
  Scenario: Example

Затем создайте файл запуска с именемBaseTests.java

BaseTest.java file

      
package features;

import com.intuit.karate.junit5.Karate;
import net.minidev.json.JSONObject;
import org.junit.jupiter.api.BeforeAll;
import testrails.APIClient;
import testrails.APIException;

import java.io.IOException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;

public class BaseTest {

    private static APIClient client = null;
    private static String runID = null;

    @BeforeAll
    public static void beforeClass() throws Exception {
        String fileName = System.getProperty("karate.options");
        //Login to API
        client = new APIClient("Write Your host, for example 
        https://yourcompanyname.testrail.io/");
        client.setUser("user.name@companyname.com");
        client.setPassword("password");

        //Create Test Run
        Map data = new HashMap();
        data.put("suite_id", "Write Your Project SuitId(Only number)");
        data.put("name", "Api Test Run");
        data.put("description", "Karate Architect Regression Running");


        JSONObject c = (JSONObject) client.sendPost("add_run/" + 
        TESTRAİL_PROJECT_ID, data);
        runID = c.getAsString("id");
    }
       //Send Scenario Result to Testrail
    public static void sendScenarioResults(boolean failed, List<String> tags, String errorMessage) {
        try {
            Map data = new HashMap();
            data.put("status_id", failed ? 5 : 1);
            data.put("comment", errorMessage);
            client.sendPost("add_result_for_case/" + runID + "/" + tags.get(0), 
            data);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (APIException e) {
            e.printStackTrace();
        }
    }

    @Karate.Test
    Karate ExampleFeatureRun() {
        return Karate.run("ExampleFeatureRun").relativeTo(getClass());
    }

}

Пожалуйста, посмотрите на "крючки", задокументированные здесь: https://github.com/intuit/karate

И вот пример с кодом здесь: https://github.com/intuit/karate/blob/master/karate-demo/src/test/java/demo/hooks/hooks.feature

Извините, я не могу помочь вам с тем, как перенести данные в тестрейл, но это может быть так же просто, как запрос HTTP. И угадайте, чем славится каратэ:)

Обратите внимание, что значения тегов могут быть доступны в тесте, вот документ для karate.tagValues (со ссылкой на пример): https://github.com/intuit/karate

Обратите внимание, что вы должны быть в версии 0.7.0, сейчас доступна версия 0.7.0.RC8.

Другие вопросы по тегам