Gauge----自動化測試工具

Gauge是一個自動化測試工具,主要是經過.spec 文件指定執行的步驟,而後由Java代碼去測試

  安裝:html

* 安裝插件 Gauge--install-alljava

*在IDEA中安裝Gauge插件git

 

  基本思想github

 * Gauge的基本思想就是經過.spec 或.md 文件,使用MarkDown語法去規定執行的動做,而後由Java或者其餘語言的文件去按照所寫的.spec 或者.md 文件的順序去執行Java文件,從而達到測試的目的緩存

專業術語:app

1 Specification工具

  • 開始的標誌,只能有一個,每一個specification至少有一個scenaior

 

Specification name          
==================

或者:  

# Specification name

 

2.Scenario測試

  • 特定場景中的一個情節,一個或多個Scenario組成一個Specification,每一個Scenario至少包含一個Step
Scenario  name

---------------------- 或者 ##scenario name

 

3 Step ui

  • specification中的一個可執行部分
  1. 通常的Step         ----正常執行的step,包含在Scenario中
  2. Context step             ----在Scenario執行以前執行的操做,在每一個Scenario執行以前都會先執行Context Step
  3. tearDown Step          ----在Scenario執行以後執行的操做,在每一個Scenario執行以後都會執行 Teardown Step
* Login into my app
* Search for "gauge"
* Search for "gauge-java"

  

4.Tagsspa

  • 用於標記specification和Scenario
specification sp1

=========

Tags : spec,login

Scenario 

-------------

Tags: scenario,main-page

5.cioncept 

  • 可重用的邏輯組成的單元,寫在單獨的文件中用於屢次使用

6.Parameters 

  • 將參數傳遞給Java或其餘文件
  1. 靜態參數: 使用「param」形式  

 

 check "param" exists 
  1. 動態參數:使用<param>形式
check <param> exists

 

  1. Table參數: 使用|id|name|形式

 

|id|name|
|--|--------|
|1|tom|
|2| mike|
  1. 特殊參數: 使用<prefix:value>形式
  • prefix: 參數類型 可使file table等
  • value: 參數值
File:

    * Verify email text is <file:email.txt>
    * Check if <file:/work/content.txt> is visible

CSV:
    * Step that takes a table <table:data.csv>
    * Check if the following users exist <table : /Users/john/work/users.csv>

7.Comments

  • 備註信息 : 任何沒有標記的一行都是註釋,備註
Thisis a comment

8.Image

   ![Alt text](/path/to/img.jpg)

    ![Alt text](/path/to/img.jpg "可選的標題")

9.Link

This is [an example](http://getgauge.io "Title") inline link.

[This link](http://github.com/getgauge/gauge) has no title attribute.

  

執行項目

經過文件執行

  • 執行specs文件夾下的specs.spec文件
gauge specs 
  • 執行specs文件夾下的specs.spec文件
gauge specs/specs.spec
  • 執行多個文件夾下的全部文件
gauge specs-dir1/ specs-dir2/
  • 執行多個文件夾下的指定文件
gauge specs-dir1/example.spec specs-dir2/example2.spec
  • 執行一個特定的Scenario
gauge specs/example.spec:16
數字表明該secnaior所在的行,從0開始
  • 執行多個特定的Scenario
gauge specs-dir1/example.spec:16 specs-dir2/example.spec:18
  • 執行的過程當中輸出日誌
gauge --verbose specs

經過Tags執行

以下列specification的Tags

 

    Login specification
    ===================
     Tags: login, admin, user login


    Successful login scenario
    -------------------------
     Tags: login-success, admin


     failed login scenario
    -------------------------
     Tags: login-failed, admin

 

  • 經過單獨的Tag執行
gauge --tag admin specs
帶有admin 的全部的都會被執行 SpecificationScenario
  • 經過多個Tag執行
gauge --tag "login,admin" specs
只有同時有 Tag的或者纔會被執行loginadminSpecificationScenario
  • 執行含有空格的Tag
gauge --tag "user login" specs
  • Tag支持與、或、非運算
 !TagA: 執行不含有TagA的Specification或Scenario
 TagA & !TagB: 執行含有TagA但不含TagB的Specification或Scenario
 (TagA & TagB) | TagC: 執行同時含有TagA和TagB或者含有TagC的Specification或Scenario
 (TagA | TagB) & TagC: 執行同時含有TagA和TagC或者TagB和TagC的Specification或Scenario

  

 

Gauge中的鉤子(Hook)

  • 鉤子能夠理解爲Java中的AOP(Aspect Oriented Programming),把SpecificationScenario當作一個切面,在執行以前和執行以後作一些操做
  1. suit hook
* 做用於全部的specification和scenaior
//在全部的Specification執行以前執行 @BeforeSuite public void BeforeSuite() { // Code for before suite } //在全部的Specification執行以後執行 @AfterSuite public void AfterSuite() { // Code for after suite }

  2.specification hook

* 做用於specification,在摸個指定的specification以前或者以後執行
//在每個Specification執行以前執行
    @BeforeSpec
    public void BeforeSpec() {
      // Code for before spec
    }

    //在每個Specification執行以後執行
    @AfterSpec
    public void AfterSpec() {
      // Code for after spec
    }

  3.Scenario hook

* 做用於Scenario 在每一個Scenario以前或者以後執行
 //在每個Scenario 執行以前執行
    @BeforeScenario
    public void BeforeScenario() {
      // Code for before scenario
    }

    //在每個Scenario 執行以後執行
    @AfterScenario
    public void AfterScenario() {
      // Code for after scenario
    }

  4.step hook

* 做用於Scenario,在每一個scenaior以前或者以後執行  
//在每個Step執行以前執行
    @BeforeStep
    public void BeforeStep() {
      // Code for before step
    }

    //在每個Step執行以後執行
    @AfterStep
    public void AfterStep() {
      // Code for after step
    } 
  • Gauge默認會在Scenario執行以後清除緩存,因此會在下個Scenario執行以前建立新的對象,該功能能夠在配置中設置清除緩存的等級
相關文章
相關標籤/搜索