使用TestNG XML进行参数化以运行特定的测试套件

时间:2015-08-01 08:46:38

标签: selenium-webdriver testng testng-dataprovider

请原谅,我不擅长英语,但我会尽力以最好的方式提出这个问题。

要求: 我有一个HTML文件,其中包含测试用户运行selenium测试的某些控件。

示例:我们有4个模块,如CAR,HOTEL,RAIL,FLIGHT和环境详细信息(DEV,QA,PROD)。如果用户想在DEV环境中运行CAR模块,他可以从HTML页面中选择相同的内容。

一旦用户选择并单击RUN按钮,命令文件应该运行,并且根据用户选择,selenium测试应该启动并运行TESTNG.xml

对于selenium来说是全新的,我不知道如何配置TESTNG XML并控制测试类中​​的测试套件。

就我而言,如果我想在PROD环境中运行FLIGHT Tests,我需要在TESTNG XML上完成哪些配置以及如何调用FLIGHT的测试集。

第二种情况,假设如果我想在PROD上运行所有4个模块,那么TESTNG XML的配置和CAR,FLIGHT,HOTEL,RAIL测试的测试套件是什么?

所有这些我想在命令提示符下运行而不打开eclipse。

2 个答案:

答案 0 :(得分:1)

  1. 首先,您必须验证TestNg XML文件中的参数
  2. 然后,您必须先配置它们,然后才能通过配置文件阅读器获取详细信息
  3. 您必须通过属性文件将参数详细信息传递给配置文件读取器

请在下面找到示例

这是您要传递参数的testng xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="false" thread-count="6" verbose="1">
    <!--Values Chrome Firefox HLChrome HLFirefox HTMLUnit phantomJS-->
    <parameter name="browser" value="Chrome"/>

    <!--Values QA_URL DEV_URL PROD_URL-->
    <parameter name="URL" value="QA_URL"/>

    <!--Values QA Dev Uat Prod -->
    <parameter name="Env" value="QA"/>

    <test name="Add Client">
        <classes>
            <class name="tests.client.AddUser_Valid"/>
        </classes>
    </test>
</suite>

这是获取参数详细信息的方式

@BeforeTest
@Parameters({"browser","URL","Env"})
public void setupBrowserAndURL(String browser,String URL,String Env)  {
 if(Env.equalsIgnoreCase("QA")){
            if(URL.equalsIgnoreCase("QA_URL")){
                driver.get(configFileReader.applicationUrl_QA());
                commonOperations.waitUntilPageLoaded(driver);
}

您必须添加配置文件读取器才能从属性文件中获取详细信息

public String applicationUrl_QA_URL() {
        String applicationUrl = properties.getProperty("applicationUrl_QA");
        if(applicationUrl != null) return applicationUrl;
        else throw new RuntimeException("url not specified in the Configuration.properties file.");
    }

    public String applicationUrl_Dev_URL() {
        String applicationUrl = properties.getProperty("applicationUrl_Demo");
        if(applicationUrl != null) return applicationUrl;
        else throw new RuntimeException("url not specified in the Configuration.properties file.");
    }

您必须在属性文件中添加URL

applicationUrl_QA = http://xxxx.qa.xxxx.cloud applicationUrl__Demo = http://xxxx.demo.xxxx.cloud

答案 1 :(得分:0)

假设您想要使用maven,这是一种方法,可能有其他/更简单的方法:

您为testEnv创建了一个变量,并为您的pom.xml创建了四个套件文件(每个套件一个),如下所示:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.4.2</version>
            <configuration>
                <systemPropertyVariables>
                    <environment>${testEnv}</environment>
                </systemPropertyVariables>
                <suiteXmlFiles>
                    <suiteXmlFile>${suiteFile1}</suiteXmlFile>
                    <suiteXmlFile>${suiteFile2}</suiteXmlFile>
                    <suiteXmlFile>${suiteFile3}</suiteXmlFile>
                    <suiteXmlFile>${suiteFile4}</suiteXmlFile>
                </suiteXmlFiles>
            </configuration>
        </plugin>
    </plugins>
</build>

然后RUN按钮可以构建/执行命令行参数,如下所示:

mvn -f pom.xml -DtestEnv=DEV -DsuiteFile1=src/test/testsuite/CAR.xml -DsuiteFile2=src/test/testsuite/HOTEL.xml clean install