51Testing软件测试论坛

标题: Testng执行顺序控制 [打印本页]

作者: 测试积点老人    时间: 2018-12-18 16:05
标题: Testng执行顺序控制

1.class执行顺序控制-testng.xml之preserve-order

preserve-order:用来控制<test>里面所有<classes>的执行顺序。<test>中默认的preserve-order为true,表示<test>下所有<classes>按照顺序执行,如:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
  3. <suite name="suite1">
  4.    <test name="test" preserve-order="true">
  5.      <classes >
  6.        <class name="com.pack.ClassTwo">
  7.        <class name="com.pack.ClassThree">
  8.        <class name="com.pack.ClassOne">
  9.      </classes >
  10.    </test>
  11. </suite>
复制代码

执行顺序:按照ClassTwo,ClassThree,ClassOne执行

【注】 一个<class>类里面可能存在多个测试方法(被@Test注解的方法),这些方法的执行顺序不受preserve-order控制。默认测试方法的执行顺序是按照方法名的首字母升序排序执行的。


2.@test执行顺序控制

(1) 使用priority指定执行顺序(默认值为0),数值越小,越靠前执行,如:

  1. @Test(priority = 0)

  2. public void testMethod1() {

  3. }

  4. @Test(priority = 1)

  5. public void testMethod2() {

  6. }

  7. @Test(priority = 2)

  8. public void testMethod3() {

  9. }
复制代码

执行顺序:按照testMethod1、testMethod2、testMethod3顺序执行


(2) 方法名称按首字母排序

因为默认执行顺序是按照方法名的首字母升序排序执行。那么,有目的地去定制方法名称,就可以让方法按照我们要求的顺序执行。如:

  1. @Test public void B() {

  2. }

  3. @Test public void A() {

  4. }

  5. @Test public void C() {

  6. }
复制代码

执行顺序:按照A、B、C顺序执行。


(3) 在xml里面使用<include>指定需要执行的方法和顺序,如:

  1. <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"><suite name="Preserve order test runs">

  2. <test name="test" preserve-order="true">

  3.   <classes>

  4.     <class name="com.pack.ClassOne">

  5.       <methods>

  6.          <include name="B" />

  7.          <include name="A" />

  8.       </methods>

  9.     </class>

  10.   </classes>

  11. </test></suite>
复制代码

执行顺序:ClassOne执行两个测试方法,先执行B,然后执行A。







欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2