Как интегрировать каратэ с тестрейлом
Я новичок в Java и использую каратэ для автоматизации API. Мне нужна помощь, чтобы объединить тестрейл с каратэ. Я хочу использовать теги для каждого сценария, которые будут идентификатором тестового примера (из testrail), и я хочу выдвинуть результат "после сценария".
Кто-нибудь может направить меня в этом? Фрагменты кода будут более ценными. Спасибо!
2 ответа
Я потратил много сил на это. Я так реализую. Может быть, вы можете следовать за ним.
В первую очередь следует скачатьAPIClient.java
иAPIException.java
файлы по ссылке ниже.
Затем вам нужно добавить эти файлы по следующему пути в вашем проекте. Например: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.