有没有办法在Karate API / Cucumber的运行时控制场景执行?

时间:2018-01-20 06:16:00

标签: web-services automation cucumber karate

我有一个功能文件包含多个由 @Scenario 注释分隔的方案( ex:3 )。

有时,我不想执行除少数场景之外的所有场景。

Karate API / Cucumber框架中是否有可用的内置方法或关键字或解决方案?

示例要素文件:

Feature: Webservices Testing
  I want to use this template for my feature file

Background:
   * def APIHelperClass = Java.type('com.org.utilities.APIHelperClass')
############################SOAP REQUEST##############################################
@Scenario1
Scenario: Get Employees Details
  * url 'http://101.154.121.135:1234//EmployeeSummary_PS?wsdl'
  Given request read ('employees.xml')
  When method post
  Then status 200

  * print 'Status Code :',responseStatus 

############################SOAP REQUEST##############################################

@Scenario2
Scenario: Get Products Details
 * url 'http://101.154.121.135:1234//ProductSummary_PS?wsdl'
 Given request read ('getProductsRequest.xml')
 When method post
 Then status 200

我无法使用以下脚本控制Scenario执行。

选项1:

@RunWith(Cucumber.class)
@CucumberOptions(tags = {"@Scenario1", "@Scenario3"})
public class KarateClass {

}

选项2:

@RunWith(Karate.class)
@CucumberOptions(tags = {"@Scenario1", "@Scenario3"})
public class KarateClass {

}

上述选项不起作用,这意味着,在使用我自己的@Test方法执行功能文件时,它会执行 3 方案。

我在课堂上做了什么错,我不知道?

您能为此提供解决方案吗?

编辑:

在我的 @Test 方法中,我使用以下脚本执行功能文件。

Map<String, Object> response =   CucumberRunner.runClasspathFeature("com/org/features/rci_api_testing.feature", args, true);

@CucumberOptions 使用了另一个类,即空手道等级

@RunWith(Cucumber.class)
@CucumberOptions(tags = {"@Scenario1", "@Scenario3"})
public class KarateClass {

}

谢谢,

1 个答案:

答案 0 :(得分:0)

是的,请使用标签:https://github.com/intuit/karate#cucumber-tags

所以你可以从命令行:

mvn test -Dcucumber.options="--tags @Scenario1"

或者如果您使用的是JUnit跑步者:

@CucumberOptions(tags = {"@Scenario1", "@Scenario2"})