- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我是 Java 新手,正在使用 Karate 进行 API 自动化。我需要帮助将 testrail 与 Karate 集成。我想为每个场景使用标签,这将是测试用例 ID(来自 testrail),并且我想将结果推送到“场景之后”。
有人可以指导我吗?代码片段将更受赞赏。谢谢你!
最佳答案
我为此付出了很多努力。我就是这样实现的。也许你可以关注它。
首先,您应该从下面的链接下载 APIClient.java
和 APIException.java
文件。
然后您需要将这些文件添加到项目中的以下路径中。例如: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/
在使用 karate map 比较 XML 和 JSON 响应时,如果我在代码下方运行,我得到,TypeError: karate.map is not a function。这和我之前的questi
这个问题在这里已经有了答案: Karate framework retry until not working as expected (1 个回答) 去年关闭。 Karate 测试框架中的重试机制
我需要对 JSON 响应的结果执行两个操作。所以我们可以在单个 JS 文件中进行这些不同的操作吗?或者我们是否需要像一个 JS 文件那样为一项操作进行映射。 请帮忙解决这个问题 最佳答案 我不建议尝试
我需要在 URL 中传递多个同名的查询参数,但在让它与 Karate 一起使用时遇到问题。就我而言,URL 应如下所示: http://mytestapi.com/v1/orders?sort=ord
我需要在 URL 中传递多个同名的查询参数,但在让它与 Karate 一起使用时遇到问题。就我而言,URL 应如下所示: http://mytestapi.com/v1/orders?sort=ord
这个问题在这里已经有了答案: Tag logic for Parallel Run (1 个回答) 关闭 1 年前。 我有一个端到端的测试套件,其功能标有@e2e 标签。这些功能位于不同的模块中,即
这个问题在这里已经有了答案: Calling feature file with multiple arguments (1 个回答) 关闭 1 年前。 我正在将参数传递给 karate.call,
将 karate 配置为在任何场景失败时停止执行的最佳方法是什么? 我看到了 karate.abort() 但我认为它只会中止该特定场景。 我想中止整个特征文件的执行。 最佳答案 目前还不支持。直到现
任何人都可以帮助我重新运行 Karate 中失败的功能。下面是用于并行的 cucumber 选项和运行器测试 - @CucumberOptions(features = "classpath:feat
目标:匹配 check 值对于 API 中的 123S 和 123O 响应是正确的 首先检查此位置 x.details[0].user.school.name[0].codeable.text 的值是
为了测试我运行的 Karate 中的特定功能: mvn test -Dkarate.options="classpath:myfeature.feature" 有没有办法运行定义到功能中的单个场景?
我正准备用 Karate 进行一个小演示,我有以下 git 项目 https://github.com/TheRasanjana/karateTesting .我正在构建一个具有多种功能的测试套件。我
我正在点击 JIRA API 以根据周期名称获取周期 ID API : http://localhost:8080/rest/zapi/latest/cycle?projectId=78654&ver
我正在尝试编写一些空手道测试来检查某些预期结构的响应。例如,有一个看起来像这样的对象: { 'true|true':'disabled', 'true|false':'locked', '
使用以下测试用例 Background: * callonce read('auth.feature') * url java.lang.System.getenv('TEST_URL
我有一个像下面这样的对象数组。 "possibleValues": [ { "unitGroup": "A",
在空手道框架中执行功能文件时,将在模拟器中打开 Google URL。 但是由于以下原因,我得到的测试用例失败了: 17:49:10.459 [ForkJoinPool-1-worker-1] DEB
首先,感谢 build karate,它对测试 API 和 UI 非常有用。我们正在使用它来测试我们的许多端点,但我们想知道是否有一种方法或哪种方法是处理 header 中包含签名的请求的最佳方法。
我想使用 KARATE 框架的数据驱动功能为 JSON 中的某些元素动态设置值(从文件读取)。以下是更多详细信息: request.json -> { wheels : , color: '' } 功
我们可以通过在命令行中包含以下内容来选择多个场景:-Dcucumber.options="--tags @S1,@S2,@S6" 如果我想排除@S6,我可以:-Dcucumber.options="-
我是一名优秀的程序员,十分优秀!