7

详解 testng.xml(二)

 3 years ago
source link: https://mp.weixin.qq.com/s/3Ri5wEfAUhArYfSVsoNE6Q
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

通过TestNG环境搭建(一)的TestNG的环境搭建,以及测试用例的执行,可以很清晰的看到,使用testng.xml的文件可以来指定要被执行的测试用例,这里面就包含了测试类,测试方法,以及其他的信息。在本文章中,针对testng.xml文件进行系统详细的总结下。

在前面的案例中,我们在testng.xml的配置文件中,只是指定了一个测试类来执行,下面我们指定多个测试类来进行执行,新增其他页面测试的测试类,具体如下所示:

R7RJzeA.png!mobile

在配置文件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文件执行后,执行结果会显示配置的测试类里面的测试用例都会被执行,如下图所示:

3Uze2mQ.png!mobile

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

InIjE3r.png!mobile

下面使用包的方式来执行,指定包后,它会执行包里面所有的测试类里面的测试方法,这种思维主要解决的是在实际的工作中,可能一个包里面会有很多的测试类,专门指定测试类的方式会让配置文件很复杂,这个时候我们可以使用指定包的方式来执行,这样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,这是一种层级关系,执行后的结果信息为:

iE7Jni.png!mobile

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

Ff2Y7jb.png!mobile

包的名称中都有“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之外,事实上,执行结果也是符合这个基本的诉求,执行结果如下所示:

F7zmeeM.png!mobile

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK