如何在某些线程中对某些功能进行分组并在KarateDSL中并行运行

时间:2018-11-24 09:18:10

标签: rest api parallel-processing karate

现在,我使用karatedsl测试我的REST-API,并且希望并行运行一些功能。 例如,我有5个功能:功能1,功能2,功能3,功能4和功能5 ... 如何将那些功能分组并在某些线程上并行运行,例如,我想在线程1中运行功能1和功能2,在线程2中运行功能3和4,在线程3中运行功能3?

1 个答案:

答案 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