行為驅動:Cucumber + Selenium + Java(三) - 使用標簽實現測試分組


在上一篇中,我們寫出了Selenium + Cucumber + Java環境下的第一個BDD自動化測試用例,這一篇我們說說怎么用標簽對用例進行分組。

 

3.1 Cucumber標簽

  實際工作中,我們的自動化用例庫可能會變得非常龐大。如果只是按照先前的方式去執行,則每一次都會執行全部用例,真實使用時這是不現實的。

  Cucumber給我們提供一種用標簽來組織自動化用例的辦法,通過分別在feature和scenario級別上定義一個或多個標簽,然后再在runner類里定義要執行的標簽情況,就可以達到測試分組的目的。

  標簽以“@”開頭。在“@”之后,可以使用任何相關文字來定義標簽。

  根據實際的工作場景,我們可以定義出各種各樣的標簽,因為標簽的起名是自由的,比如:

  •   根據測試活動的不同可以定義:@SanityTest @RegressionTest @FunctionalTest
  •   根據測試用例的不同優先級可以定義:@P1 @P2 @P3
  •   根據測試的功能模塊來定義:@UserManagement @ProductDetail @CheckOutFlow

  等等等等,以上的標簽名字都是自定義的。很好理解,比如打了@SanityTest標簽的用例,就是一個做完整性測試的用例。

  一個feature或者scenario都可以有多個標簽,而由於scenario和feature之間又有一定的從屬關系,可以理解為feature所擁有的標簽都會被他內部的scenario繼承。

 

3.2 Cucumber標簽實例

  我們在features文件夾下面,新建一個叫TestTags.feature的文件。

  文件里寫入以下gherkin代碼: 

@AddToBasket
Feature: Test JD add item into basket
  Description

  @JD @SanityTest @FunctionalTest @P1
  Scenario: Add first product into basket from PDP
    Given I navigate to JD site
    When I search for a keyword
    And I pick the first item from PLP
    And I add that particular item into basket
    Then That particular item is added

  @JD @FunctionalTest @P2
  Scenario: Add secondary product into basket from PDP
    Given I navigate to JD site
    When I search for a keyword
    And I pick the second item from PLP
    And I add that particular item into basket
    Then That particular item is added

  在這個特性文件里,我們定義了一個特性,包括兩個場景。可以看到Feature這個層級有一個@AddToBasket的標簽,而場景1和2之間的區別是,場景1屬於@SanityTest並且優先級為@P1。

 

3.3 通過runner類實現分組執行

  接下來只需要在runner類中,將標簽進行一個選擇就可以了。

  比如,我們想要讓有@SanityTest標簽的用例進行執行,那么我們的runner類應該如下編寫:

package CucumberRunner;

import org.junit.runner.RunWith;

import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;

@RunWith(Cucumber.class)
@CucumberOptions(features="Features",glue="stepDefinitions",tags="@SanityTest")

public class CucumberRunner {    
    
}

  我們再通過這個runner類去執行cucumber用例的時候,就會只執行有相應標簽的scenario。

  Runner類中選擇標簽也是可以多選,而且還可以選擇排除某些標簽。

  比如說,tags="@SanityTest, @P1"就是執行所有擁有這兩個標簽的用例。(注意這里是‘或’關系)。

  又比如,tags="@FunctionalTest, ~@P2"就是執行所有FunctionalTest並且不為P2的用例。~符號表示排除某個標簽。

  

  到此為止,通過對features和scenario打標簽,然后通過runner選擇標簽去執行,我們就可以實現測試分組的目的。

 

  下一篇我們來實現cucumber用例的參數化。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM