gpt4 book ai didi

java - 如何将 Karate 与 testrail 集成

转载 作者:太空宇宙 更新时间:2023-11-04 10:42:38 25 4
gpt4 key购买 nike

我是 Java 新手,正在使用 Karate 进行 API 自动化。我需要帮助将 testrail 与 Karate 集成。我想为每个场景使用标签,这将是测试用例 ID(来自 testrail),并且我想将结果推送到“场景之后”。

有人可以指导我吗?代码片段将更受赞赏。谢谢你!

最佳答案

我为此付出了很多努力。我就是这样实现的。也许你可以关注它。

首先,您应该从下面的链接下载 APIClient.javaAPIException.java 文件。

TestrailApi in github

然后您需要将这些文件添加到项目中的以下路径中。例如:YourProjectFolder/src/main/java/testrails/

在 karate-config.js 文件中,每次测试后,您可以将案例标签、测试结果和错误消息发送到 BaseTest.java 文件,我将很快讨论该文件。

karate-config.js 文件


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;
}

请不要忘记在功能文件中为场景添加标签。例如@1111


Feature: ExampleFeature

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

@1111
Scenario: Example

接下来,创建一个名为 BaseTests.java 的运行程序文件

BaseTest.java 文件


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());
}

}

关于java - 如何将 Karate 与 testrail 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48785037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com