详解testng.xml

Posted Python自动化测试

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了详解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(二)

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

详解testng.xml(二)

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

 

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

 

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

以上是关于详解testng.xml的主要内容,如果未能解决你的问题,请参考以下文章

testNG xml文件详解

如何在 Maven 中从 pom.xml 调用 testng.xml 文件

当 @BeforeTest 方法失败时,为啥它没有在 testng-failed.xml 中列出?

testng.xml 配置大全

TestNG学习-testng.xml

TestNG:如何以编程方式运行自定义 TestNG.XML 文件