《手把手教你》系列基礎篇(七十八)-java+ selenium自動化測試-框架設計基礎-TestNG依賴測試- 中篇(詳解教程)

巨集哥發表於2022-03-21

1.簡介

 上一篇講解了依賴測試的各種方法,今天繼續講解依賴測試的方法,這一篇主要是講解和分享通過xml檔案配置組名依賴方法( 主要是測試組的用法)。廢話不說,直接上乾貨。

2.例項

測試組:一個組可包含多個測試方法,可進行組巢狀。

2.1程式碼設計

1.test1屬於功能測試,test2屬於介面測試,test3屬於介面和功能測試 ,test4是不屬於任何組,如下圖所示:

2.參考程式碼

package library;

import org.testng.annotations.Test;

/**
 * @author 北京-巨集哥
 * 
 * @公眾號:北京巨集哥
 * 
 * 《手把手教你》系列基礎篇(七十七)-java+ selenium自動化測試-框架設計基礎-TestNG依賴測試(詳解教程)
 *
 * 2022年3月05日
 */

public class TestDepend {
    
  @Test(groups = {"Function"})
  public void test1() {
      
      System.out.println("Function-Test");
  }
  
  @Test(groups = {"API"})
  public void test2() {
      
      System.out.println("API-Test");
  }
  
  @Test(groups = {"function","api"})
  public void test3() {
      
      System.out.println("function and api");
  }
  
  @Test
  public void test4() {
      
      System.out.println("not in API and not in Function");
  }
}

3.執行程式碼,右鍵Run AS->TestNG Suite,控制檯輸出,如下圖所示:

 2.2僅執行API測試

1.僅執行API測試 時,xml檔案的配置,如下圖所示:

2.參考程式碼

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<!-- Suite相關設定,這裡paraller是執行的模式,有tests classes methods三種取值,thread-count表示兩個執行緒執行用例 -->
<suite name="Suite" parallel="tests" thread-count="2">
  <!--<test name="Test">
      <parameter name="Browser" value="Firefox" />
      <classes>
              <class name="lessons.TestDiffBrowser"/>
      </classes>
  </test> Test -->
  <!--<test name="Test1">
      <parameter name="Browser" value="Chrome" />
      <classes>
              <class name="lessons.TestDiffBrowser"/>
      </classes>
  </test>  Test -->
  <test name="example1">
      <groups>
          <run>
              <include name="API" />
          </run>
      </groups>
      <classes>
          <class name="library.TestDepend" />
      </classes>
  </test>
</suite> <!-- Suite -->

3.選中xml檔案,執行程式碼,右鍵Run AS->TestNG Suite,控制檯輸出,如下圖所示:

2.3僅執行function

從上邊例項可以看出,結果是隻執行了API方法的測試用例,如果只執行功能測試,這時把api換成function即可,如下圖所示:

2.4執行API和功能測試

1.xml檔案的配置,如下圖所示:

2.參考程式碼

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<!-- Suite相關設定,這裡paraller是執行的模式,有tests classes methods三種取值,thread-count表示兩個執行緒執行用例 -->
<suite name="Suite" parallel="tests" thread-count="2">
  <!--<test name="Test">
      <parameter name="Browser" value="Firefox" />
      <classes>
              <class name="lessons.TestDiffBrowser"/>
      </classes>
  </test> Test -->
  <!--<test name="Test1">
      <parameter name="Browser" value="Chrome" />
      <classes>
              <class name="lessons.TestDiffBrowser"/>
      </classes>
  </test>  Test -->
  <test name="example1">
      <groups>
          <run>
                <include name="API" />
              <include name="Function" />
          </run>
      </groups>
      <classes>
          <class name="library.TestDepend" />
      </classes>
  </test>
</suite> <!-- Suite -->

3.選中xml檔案,執行程式碼,右鍵Run AS->TestNG Suite,控制檯輸出,如下圖所示:

 3.exclude

例項2中,介紹的是include。這裡巨集哥再介紹一下exclude。執行除了某用例之外的其他用例。例如,執行除了API介面的其他用例。

1.xml檔案的配置,如下圖所示:

2.參考程式碼

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<!-- Suite相關設定,這裡paraller是執行的模式,有tests classes methods三種取值,thread-count表示兩個執行緒執行用例 -->
<suite name="Suite" parallel="tests" thread-count="2">
  <!--<test name="Test">
      <parameter name="Browser" value="Firefox" />
      <classes>
              <class name="lessons.TestDiffBrowser"/>
      </classes>
  </test> Test -->
  <!--<test name="Test1">
      <parameter name="Browser" value="Chrome" />
      <classes>
              <class name="lessons.TestDiffBrowser"/>
      </classes>
  </test>  Test -->
  <test name="example1">
      <groups>
          <run>
                <exclude name="API" />
          </run>
      </groups>
      <classes>
          <class name="library.TestDepend" />
      </classes>
  </test>
</suite> <!-- Suite -->

3.選中xml檔案,執行程式碼,右鍵Run AS->TestNG Suite,控制檯輸出,如下圖所示:

4.正規表示式來寫組名

這裡先把組名API改成了 API test,正則用來代替組名較長的時候

1.xml檔案的配置,如下圖所示:

2.參考程式碼

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<!-- Suite相關設定,這裡paraller是執行的模式,有tests classes methods三種取值,thread-count表示兩個執行緒執行用例 -->
<suite name="Suite" parallel="tests" thread-count="2">
  <!--<test name="Test">
      <parameter name="Browser" value="Firefox" />
      <classes>
              <class name="lessons.TestDiffBrowser"/>
      </classes>
  </test> Test -->
  <!--<test name="Test1">
      <parameter name="Browser" value="Chrome" />
      <classes>
              <class name="lessons.TestDiffBrowser"/>
      </classes>
  </test>  Test -->
  <test name="example1">
      <groups>
          <run>
                <include name="API.*" />
          </run>
      </groups>
      <classes>
          <class name="library.TestDepend" />
      </classes>
  </test>
</suite> <!-- Suite -->

3.選中xml檔案,執行程式碼,右鍵Run AS->TestNG Suite,控制檯輸出,如下圖所示:

5.組巢狀

每個用例都要歸屬於一個組名,所有組都歸All管理,這樣在xml中run一個All 即可。

1.xml檔案的配置,如下圖所示:

2.參考程式碼

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<!-- Suite相關設定,這裡paraller是執行的模式,有tests classes methods三種取值,thread-count表示兩個執行緒執行用例 -->
<suite name="Suite" parallel="tests" thread-count="2">
  <!--<test name="Test">
      <parameter name="Browser" value="Firefox" />
      <classes>
              <class name="lessons.TestDiffBrowser"/>
      </classes>
  </test> Test -->
  <!--<test name="Test1">
      <parameter name="Browser" value="Chrome" />
      <classes>
              <class name="lessons.TestDiffBrowser"/>
      </classes>
  </test>  Test -->
  <test name="example1">
      <groups>
          <define name="All">
                 <include name="API Test" />
                 <include name="Function" />
          </define>
          <run>
                <include name="All" />
          </run>
      </groups>
      <classes>
          <class name="library.TestDepend" />
      </classes>
  </test>
</suite> <!-- Suite -->

3.選中xml檔案,執行程式碼,右鍵Run AS->TestNG Suite,控制檯輸出,如下圖所示:

6.其他

根據xml配置檔案中的  groups 的<dependencies>來做用例組依賴執行。

1.xml檔案的配置,如下圖所示:

2.參考程式碼

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<!-- Suite相關設定,這裡paraller是執行的模式,有tests classes methods三種取值,thread-count表示兩個執行緒執行用例 -->
<suite name="Suite" parallel="tests" thread-count="2">
  <!--<test name="Test">
      <parameter name="Browser" value="Firefox" />
      <classes>
              <class name="lessons.TestDiffBrowser"/>
      </classes>
  </test> Test -->
  <!--<test name="Test1">
      <parameter name="Browser" value="Chrome" />
      <classes>
              <class name="lessons.TestDiffBrowser"/>
      </classes>
  </test>  Test -->
  <test name="example1">
      <groups>
          <dependencies>
                 <group name="API" depends-on="Function Not"/>
          </dependencies>
      </groups>
      <classes>
          <class name="library.TestDepend" />
      </classes>
  </test>
</suite> <!-- Suite -->

3.選中xml檔案,執行程式碼,右鍵Run AS->TestNG Suite,控制檯輸出,如下圖所示:

測試用例組的順序是:先執行被依賴的組的方法用例,再執行沒有依賴關係的 最後執行需要依賴關係的用例方法。

7.小結

 好了,今天時間不早了,而且知識點特別的簡單,今天就分享到這裡,下一篇巨集哥利用實際例子講解一下依賴測試。

相關文章