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

Java 如何根据TestNG中的条件排除组?,java,selenium,selenium-webdriver,testng,qaf,Java,Selenium,Selenium Webdriver,Testng,Qaf,我在登录模块中有大约10个测试用例。我必须在登台和产品环境上执行测试,但在产品环境上,需要排除一些特定的测试用例,这些测试用例需要在应用程序中插入一些虚拟数据。为此,我在场景中添加了一个组名PRO_EXCLUDE 使用组合组名引用下面的示例,我需要在执行时排除组合组名 SCENARIO: verify login landing page META-DATA: {"TestCase_ID":"BP_L&R_001","description":"verify login landing

我在登录模块中有大约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
其余方法只有一组,即
回归

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

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


这将执行同时包含
回归
PRO_排除
组的场景。我不想执行这一个,但剩下的场景只有
回归
组。

以下条件对我有效:

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


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

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

  • 范围-烟雾、回归
  • 模块-功能模块1,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
来设置测试用例元数据。您可以通过设置适当的
include
exclude
属性值来使用元数据过滤器,如下所示:

include= {'scope': ['REGRESSION'], 'feature': ['PRO_EXCLUDE']}
它将包括具有元数据
范围
的测试用例/场景,其值为
回归
功能
,其值为
PRO_EXCLUDE
。请参阅更多使用示例

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