详解testng.xml(二)

    通过第一部分的TestNG的环境搭建,以及测试用例的执行,可以很清晰的看到,使用testng.xml的文件可以来指定要被执行

的测试用例,这里面就包含了测试类,测试方法,以及其他的信息。在本文章中,针对testng.xml文件进行系统详细的总结下。

     在前面的案例中,我们在testng.xml的配置文件中,只是指定了一个测试类来执行,下面我们指定多个测试类来进行执行,

新增其他页面测试的测试类,具体如下所示:

 

在配置文件testng.xml的文件中,指定测试类BaiduTest和BingTest都可以正确的执行,修改后的testng.xml文件内容为:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<!--<suite name="UnitSuite">-->
<suite name="Sample Suite">
    <test name="First Test">
        <classes>
            <class name="com.selenium.ui.org.BaiduTest"></class>
        </classes>
    </test>
    
    <test name="Second Test">
        <classes>
            <class name="com.selenium.ui.org.BingTest"></class>
        </classes>
    </test>
  
</suite>

 

选择testng.xml文件执行后,执行结果会显示配置的测试类里面的测试用例都会被执行,如下图所示:

 

     下面我们来演示指定包来执行,以及指定测试类里面的测试方法来执行,首先来看指定包来执行,我们创建新的测试包,如下所示:

 

 下面使用包的方式来执行,指定包后,它会执行包里面所有的测试类里面的测试方法,这种思维主要解决的是在实际的工作中,可能一个包

里面会有很多的测试类,专门指定测试类的方式会让配置文件很复杂,这个时候我们可以使用指定包的方式来执行,这样testng.xml文件就很

简单,修改后的testng.xml配置文件具体内容为:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<!--<suite name="UnitSuite">-->
<suite name="Sample Suite">
    <test name="First Package">
        <packages>
            <package name="com.selenium.ui.org"></package>
        </packages>
    </test>
    
    <test name="Second Package">
        <packages>
            <package name="org.ui.selenium.com"></package>
        </packages>
    </test>
    
</suite>

 

这样就会执行package里面所有的测试类以及里面的测试方法,其实最终执行的是测试方法,但是测试方法上面是测试类以及package,这是一

种层级关系,执行后的结果信息为:

被测试的包如果有相同的名称,可以使用正则的方式来,如下所示:

 

 包的名称中都有“test”的关键字,那么可以使用正则的方式,修改后的testng.xml文件内容为:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<!--<suite name="UnitSuite">-->
<suite name="Sample Suite">
    <test name="First Package">
        <packages>
            <package name="test.*"></package>
        </packages>
    </test>
    
</suite>

      下面我们再来看测试方法的,也就是说并不是一个测试类里面所有的测试方法都需要被执行,可能依据特定的条件,只有部分的测试方法需要

被执行,那么可以在配置文件testng.xml里面指定测试方法来进行执行,修改后的配置文件testng.xml内容为:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<!--<suite name="UnitSuite">-->
<suite name="Sample Suite">
    <test name="Method Test">
        <classes>
            <class name="com.selenium.ui.org.BaiduTest">
                <methods>
                    <include name="test_baidu_title"></include>
                </methods>
            </class>
        </classes>
    </test>
</suite>

在上面的配置文件中可以看到,我们只执行测试类里面的test_baidu_title测试方法,其他的测试方法实际也就不会被执行。当然在实际的案例中,可

能会有一些测试类中有的测试方法不需要被执行,这在实际的工作中很常态化的案例,我们修改testng.xml来模拟这样的一个案例,修改后的文件内容

为:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<!--<suite name="UnitSuite">-->
<suite name="Sample Suite">
    <test name="Method Test">
        <classes>
            <class name="com.selenium.ui.org.BaiduTest">
                <methods>
                    <exclude name="test_baidu_title"></exclude>
                </methods>
            </class>
        </classes>
    </test>
</suite>

在如上的案例中,它的具体含义是执行测试类BaiduTest里面所有的测试方法,但是除test_baidu_title之外,事实上,执行结果也是符合这个基本的诉求,

执行结果如下所示:

 

      感谢您的阅读,后续会持续更新。

 

posted @ 2021-01-02 20:55  无涯(WuYa)  阅读(609)  评论(0)    收藏  举报