现在,我使用karatedsl测试我的REST-API,并且希望并行运行一些功能。 例如,我有5个功能:功能1,功能2,功能3,功能4和功能5 ... 如何将那些功能分组并在某些线程上并行运行,例如,我想在线程1中运行功能1和功能2,在线程2中运行功能3和4,在线程3中运行功能3?
答案 0 :(得分:2)
直到空手道0.8.0,您才能在功能级别(每个线程1个功能)上并行运行测试。
并行运行功能
以下是空手道文档中的一个示例:
@CucumberOptions(tags = {"@smoke"})
public class TestParallel {
@Test
public void testParallel() {
KarateStats stats = CucumberRunner.parallel(getClass(), 5, "target/surefire-reports");
assertTrue("scenarios failed", stats.getFailCount() == 0);
}
}
使用此并行运行器,您可以指定所需的线程数(在上面的示例中,为5 )。
此处有关并行执行的更多详细信息-> Parallel Execution in Karate
功能分组:
您可以使用tags
之类的@<tag_name>
对功能文件进行分组,
例如:
@smoke
Feature:
Scenario:
* print "Smoke"
类似地,您可以将此标签添加到要组合在一起以执行的所有功能。
现在在测试中以CucumberOptions
的形式提及要执行空手道的标记将运行在 parallel 中用该名称标记的所有测试。
有关标签的更多详细信息:Tags / Grouping
因此,您可以按标记定义分组,并按定义并行执行 线程但是,您无法定义哪个线程应运行 功能,IMO看起来毫无意义。
注意:如果您打算使用
0.9.0
,则您 将能够在场景级别运行并行测试(每个功能都将分解为场景并在每个线程中作为1个场景运行),而不是CucumberOptions
,您必须使用KarateOptions
有关空手道0.9.0更改的更多详细信息:Planned deprecations