Karate 仅使用动态输入运行选定的测试
我尝试了一些方法来解决我的问题,但没有成功(我确实需要改进我的Java:),所以我希望我遗漏了一些东西,或者有人可以为我指出正确的方向 我需要测试多个微服务。我应该能够一次测试所有内容,或者只测试我想要的内容。每个服务都有自己的数据库和不同的功能文件。请注意,这些服务可能不是全部启动和运行的 我可以手动设置每个服务的配置来运行测试。理想情况下,我希望在命令行中传递一个带有服务名称的变量,测试应该开始 在当前设置中,我使用callSingle运行DBInit.feature,它运行SQL脚本来填充我的数据库。我还设置了功能文件中使用的全局变量。这个很好用 当我添加更多用于测试未运行的服务的功能文件时,就会出现问题。当我必须为指定的服务使用callSingle来填充其数据库时 第一个想法是使用不同的环境,但我可能需要在一次运行中使用一个报告执行5个环境。然后我想为每个服务实现runner,但我不确定这些runner是否并行运行,也不确定在这种情况下如何填充DB 是否可以使用将传递给主测试类的自定义变量Karate 仅使用动态输入运行选定的测试,karate,Karate,我尝试了一些方法来解决我的问题,但没有成功(我确实需要改进我的Java:),所以我希望我遗漏了一些东西,或者有人可以为我指出正确的方向 我需要测试多个微服务。我应该能够一次测试所有内容,或者只测试我想要的内容。每个服务都有自己的数据库和不同的功能文件。请注意,这些服务可能不是全部启动和运行的 我可以手动设置每个服务的配置来运行测试。理想情况下,我希望在命令行中传递一个带有服务名称的变量,测试应该开始 在当前设置中,我使用callSingle运行DBInit.feature,它运行SQL脚本来填充
public class DemoTestSelected {
@BeforeClass
public static void beforeClass() throws Exception {
TestBase.beforeClass();
}
@Test
public void testSelected() {
List<String> tags = Arrays.asList("~@ignore");
List<String> features = Arrays.asList("classpath:demo/cats");
String karateOutputPath = "target/surefire-reports";
Results results = Runner.path(features)
.tags(tags)
.outputCucumberJson(true)
.reportDir(karateOutputPath).parallel(5);
DemoTestParallel.generateReport(karateOutputPath);
assertTrue(results.getErrorMessages(), results.getFailCount() == 0);
}
}
public类已选定{
@课前
public static void beforeClass()引发异常{
TestBase.beforeClass();
}
@试验
public void testSelected(){
List tags=Arrays.asList(“~@ignore”);
List features=Arrays.asList(“classpath:demo/cats”);
字符串karateOutputPath=“目标/surefire报告”;
结果=Runner.path(特征)
.标签(标签)
.outputCucumberJson(真)
.reportDir(karateOutputPath).parallel(5);
DemosTestParallel.generateReport(karateOutputPath);
assertTrue(results.getErrorMessages(),results.getFailCount()==0);
}
}
例如,要在配置中设置的标记和功能?我重新阅读了您的问题几次,并放弃了理解它。但我会提出几个原则:
- 您应该使用标记来决定运行/不运行哪些功能。尽量使你需要的一切都适合这个模型,不要使事情复杂化
- 为了获得更多的控制,您可以在命令行上设置一些“系统属性”,也许在使用
之前,您可以编写一些Java逻辑,它将是--“ifRunner
(或其他一些系统属性)是karate.env
,然后选择标记foo
one
和two
等three
- 是的,空手道1.0系列在技术上可以并行运行多个
实例,但这是留给您的,我们没有示例,它需要您手动管理线程或JavaRunner
karate.callSingle
。我需要callSingle来填充数据库。我将尝试用Java实现一些东西。标签不适用于karate.callSingle
-这对我来说也没有任何意义。无论如何,最好的使用karate.callSingle(功能1.feature)
在karate config.js
中,其中feature1
有两个具有不同标签的场景(@tag1和@tag2)
,即使我使用-Dkarate.options=“--tags@tag1”),这两个场景每次都会执行“
。ps.thx适用于link@senaid这是预期的行为。一旦你使用了任何类型的call
标签,除非你使用了“按标签呼叫”选项,否则就不涉及标签:我没有注意到这一点。非常感谢你