如何根据TestNG中的条件排除组?

时间:2018-09-21 06:20:31

标签: java selenium selenium-webdriver testng qaf

我在Login模块中有大约10个测试用例。我必须在暂存和产品环境上执行测试,但是在产品环境上,需要排除一些特定的测试用例,这些用例需要在应用程序中插入一些虚拟数据。为此,我在方案中添加了一个组名PRO_EXCLUDE

请参考下面的示例,其中包含在执行时需要排除的组合组名。

SCENARIO: verify login landing page
META-DATA: {"TestCase_ID":"BP_L&R_001","description":"verify login landing page ","groups":["REGRESSION","PRO_EXCLUDE"]}    
    Given user is on homepage
    When clicks on login link
    Then verify page title text with title '${loginpage.title}'
END

方法的其余部分只有一组,即REGRESSION

我已经按照以下方式配置了测试

<test name="Login" enabled="true">
    <method-selectors>
        <method-selector>
            <script language="beanshell"><![CDATA[ return groups.containsKey("REGRESSION") && groups.containsKey("PRO_EXCLUDE");]]></script>
        </method-selector>
    </method-selectors>
    <parameter name="scenario.file.loc" value="scenarios/login.bdd" />

    <classes>
        <class name="com.qmetry.qaf.automation.step.client.text.BDDTestFactory"></class>
    </classes>
</test>

这将执行同时具有REGRESSIONPRO_EXCLUDE组的方案。我不想执行此操作,但只用REGRESSION组执行其余方案。

2 个答案:

答案 0 :(得分:1)

更好的方法是利用qaf的元数据功能。据此,与其添加多个组,不如根据性质对其进行分类。例如:

  • 范围-冒烟,回归
  • 模块-FunctionlModule1,FM2
  • 渠道-网络,API,移动设备

等...

您需要为您的AUT定义并在方案中将其设置为元数据。

SCENARIO: verify login landing page
META-DATA: {"TestCase_ID":"BP_L&R_001","description":"verify login landing page ","scope":"REGRESSION","feature":"PRO_EXCLUDE"]}    
    Given user is on homepage
    When clicks on login link
    Then verify page title text with title '${loginpage.title}'
END

如果您是用Java编写测试用例,则可以在测试方法上使用@MetaData来设置测试用例元数据。您可以通过如下设置适当的includeexclude属性值来使用元数据过滤器:

include= {'scope': ['REGRESSION'], 'feature': ['PRO_EXCLUDE']}

它将包括具有值为scope的元数据REGRESSION的测试用例/场景,并且值为featurePRO_EXCLUDE。有关更多用法示例,请参考documentation

注意 :要正常使用此功能,必须从qaf com.qmetry.qaf.automation.testng.pro.QAFMethodSelector中的xml配置文件或ant testng目标或maven中添加方法选择器pom。 qaf也将群组视为元数据之一。

答案 1 :(得分:0)

以下对我有用的条件:

<method-selectors>
    <method-selector>
        <script language="beanshell"><![CDATA[ return groups.containsKey("REGRESSION") && (!groups.containsKey("PRO_EXCLUDE"));]]></script>
    </method-selector>
</method-selectors>

进一步的解决方案将不胜感激。