在自动化测试中使用TestNG【第 2 章 TestNG语法 2.4 testng.xml】

2.4 testng.xml

在Eclipse中创建

testng.xml 文件的作用是控制测试执行的过程,该文件可以使用 Eclipse 的 TestNG 插件自动生成。在工程(testng)上用鼠标右击,从弹出的快捷菜单中选择「TestNG → Convert to TestNG」选项,此时会弹出「Refactoring」对话框,直接单击「Finish」按钮,生成「testng.xml」文件,文件内容如下

这是一个典型的 XML 文件,第一行包含了 XML 的声明。<suite>代表一个 Suite;<test>代表一个 Test;<classes>代表一组 Class,可以包含多个 Class,这里默认添加了 FirstClassTest。<test>标签里有一个 thread-count 属性表示并行线程数,该属性需要与 parallel 属性配合使用

 在Idea中创建

1. 安装插件并重启IDE

Create TestNG XML

2.在项目上右键单击使用

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="All Test Suite">
    <test verbose="2" preserve-order="true" name="C:/Users/HASEE/IdeaProjects/testng">
        <classes>
            <class name="cn.edu.bjut.testng.FirstClassTest">
                <methods>
                    <include name="testCase1"/>
                </methods>
            </class>
            <class name="cn.edu.bjut.testng.FirstClassTest3">
                <methods>
                    <include name="testCase1"/>
                </methods>
            </class>
            <class name="cn.edu.bjut.testng.FirstClassTest4">
                <methods>
                    <include name="testCase1"/>
                    <include name="testCase2"/>
                    <include name="testCase3"/>
                    <include name="testCase4"/>
                    <include name="testCase6"/>
                </methods>
            </class>
        </classes>
    </test>
</suite>
View Code

2.4.1 <package>;

如果一个 Class 需要一个&lt;class&gt;标签,那么 10 个 Class 就需要 10 个&lt;class&gt;标签。如果这些 Class 都在一个 Package 中,则可以使用&lt;package&gt;标签进行 Package 设置,以简化配置过程

删除 FirstClassTest 中的内容,输入以下代码

新增 SecondClassTest,输入以下内容

修改 testng.xml 文件,删除&lt;classes&gt;标签及其内部的配置,并以包设置代替,见以下粗体部分内容

保存所做的修改,在「testng.xml」上用鼠标右击,从弹出的快捷菜单中选择「Run As → TestNG Suite」选项,此时 Eclipse 的控制台输出如下

从输出结果可以看到两个 Class 都执行了,说明testng.xml包设置生效

2.4.2 <include>;和<exclude>

&lt;include&gt;和&lt;exclude&gt;的作用是对方法进行设置,&lt;include&gt;代表包含,&lt;exclude&gt;代表排除,写法上它们都支持正则表达式

删除 FirstClassTest 中的内容,输入以下代码

 修改 testng.xml 文件,删除&lt;packages&gt;标签及其内部的配置,并以方法设置代替,见以下粗体部分内容

保存所做的修改,在「testng.xml」上用鼠标右击,从弹出的快捷菜单中选择「Run As → TestNG Suite」选项,此时 Eclipse 的控制台输出如下

FirstClass 里共有 testCase1、testCase2、testCase3 和 newTestCase1 四个测试用例,在&lt;include&gt;标签中,name 属性的值为「testCase.,其中「.」代表任意一个字符,因此 testCase1、testCase2 和 testCase3 都满足要求。但是在&lt;exclude&gt;标签中,name 属性的值为「testCase3,也就是排除 testCase3。所以最终只有 testCase1 和 testCase2 运行了

&lt;include&gt;和&lt;exclude&gt;标签除了用在 Test 中,还可以用在其他地方,比如分组运行。删除 FirstClassTest 中的内容,输入以下代码

修改 testng.xml 文件,新增&lt;groups&gt;标签及相关配置,同时修改&lt;classes&gt;标签内的配置,见以下粗体部分内容

保存所做的修改,在「testng.xml」上用鼠标右击,从弹出的快捷菜单中选择「Run As → TestNG Suite」选项,此时 Eclipse 的控制台输出如下

可以看到只执行了 myGroup 分组的两条用例,符合预期

2.4.3 <parameter>标签

&lt;parameter&gt;标签和@Parameters 注解配合使用,可对测试用例传递参数,达到数据分离的效果。删除 FirstClassTest 中的内容,输入以下代码

修改 testng.xml 文件,删除&lt;groups&gt;标签及相关配置,同时新增&lt;parameter&gt;标签,详见以下粗体部分内容

保存所做的修改,在「testng.xml」上用鼠标右击,从弹出的快捷菜单中选择「Run As → TestNG Suite」选项,此时 Eclipse 的控制台输出如下

 可以看到 myParam 的值通过&lt;parameter&gt;标签和@Parameters 注解配合传递给了 testCase1

posted @ 2020-12-28 17:08  Marlon康  阅读(123)  评论(0编辑  收藏  举报