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>
2.4.1 <package>;
如果一个 Class 需要一个<;class>;标签,那么 10 个 Class 就需要 10 个<;class>;标签。如果这些 Class 都在一个 Package 中,则可以使用<;package>;标签进行 Package 设置,以简化配置过程。
删除 FirstClassTest 中的内容,输入以下代码:
新增 SecondClassTest,输入以下内容:
修改 testng.xml 文件,删除<;classes>;标签及其内部的配置,并以包设置代替,见以下粗体部分内容:
保存所做的修改,在「testng.xml」上用鼠标右击,从弹出的快捷菜单中选择「Run As → TestNG Suite」选项,此时 Eclipse 的控制台输出如下:
从输出结果可以看到两个 Class 都执行了,说明testng.xml包设置生效。
2.4.2 <include>;和<exclude>;
<;include>;和<;exclude>;的作用是对方法进行设置,<;include>;代表包含,<;exclude>;代表排除,写法上它们都支持正则表达式。
删除 FirstClassTest 中的内容,输入以下代码:
修改 testng.xml 文件,删除<;packages>;标签及其内部的配置,并以方法设置代替,见以下粗体部分内容:
保存所做的修改,在「testng.xml」上用鼠标右击,从弹出的快捷菜单中选择「Run As → TestNG Suite」选项,此时 Eclipse 的控制台输出如下:
FirstClass 里共有 testCase1、testCase2、testCase3 和 newTestCase1 四个测试用例,在<;include>;标签中,name 属性的值为「testCase.」,其中「.」代表任意一个字符,因此 testCase1、testCase2 和 testCase3 都满足要求。但是在<;exclude>;标签中,name 属性的值为「testCase3」,也就是排除 testCase3。所以最终只有 testCase1 和 testCase2 运行了。
<;include>;和<;exclude>;标签除了用在 Test 中,还可以用在其他地方,比如分组运行。删除 FirstClassTest 中的内容,输入以下代码:
修改 testng.xml 文件,新增<;groups>;标签及相关配置,同时修改<;classes>;标签内的配置,见以下粗体部分内容:
保存所做的修改,在「testng.xml」上用鼠标右击,从弹出的快捷菜单中选择「Run As → TestNG Suite」选项,此时 Eclipse 的控制台输出如下:
可以看到只执行了 myGroup 分组的两条用例,符合预期。
2.4.3 <parameter>标签
<;parameter>;标签和@Parameters 注解配合使用,可对测试用例传递参数,达到数据分离的效果。删除 FirstClassTest 中的内容,输入以下代码:
修改 testng.xml 文件,删除<;groups>;标签及相关配置,同时新增<;parameter>;标签,详见以下粗体部分内容:
保存所做的修改,在「testng.xml」上用鼠标右击,从弹出的快捷菜单中选择「Run As → TestNG Suite」选项,此时 Eclipse 的控制台输出如下:
可以看到 myParam 的值通过<;parameter>;标签和@Parameters 注解配合传递给了 testCase1。