* Gauge是一個自動化測試工具,主要是通過.spec 文件指定執行的步驟,然后由Java代碼去測試
安裝:
* 安裝插件 Gauge--install-all
*在IDEA中安裝Gauge插件

基本思想
* Gauge的基本思想就是通過.spec 或.md 文件,使用MarkDown語法去規定執行的動作,然后由Java或者其他語言的文件去按照所寫的.spec 或者.md 文件的順序去執行Java文件,從而達到測試的目的
專業術語:
1 Specification
- 開始的標志,只能有一個,每個specification至少有一個scenaior
Specification name ================== 或者: # Specification name
2.Scenario
- 特定場景中的一個情節,一個或多個Scenario組成一個Specification,每個Scenario至少包含一個Step
Scenario name
---------------------- 或者 ##scenario name
3 Step
- specification中的一個可執行部分
- 一般的Step ----正常執行的step,包含在Scenario中
- Context step ----在Scenario執行之前執行的操作,在每個Scenario執行之前都會先執行Context Step
- tearDown Step ----在Scenario執行之后執行的操作,在每個Scenario執行之后都會執行 Teardown Step
* Login into my app * Search for "gauge" * Search for "gauge-java"
4.Tags
- 用於標記specification和Scenario
specification sp1 ========= Tags : spec,login Scenario ------------- Tags: scenario,main-page
5.cioncept
- 可重用的邏輯組成的單元,寫在單獨的文件中用於多次使用
6.Parameters
- 將參數傳遞給Java或其他文件
- 靜態參數: 使用“param”形式
check "param" exists
- 動態參數:使用<param>形式
check <param> exists
- Table參數: 使用|id|name|形式
|id|name| |--|--------| |1|tom| |2| mike|
- 特殊參數: 使用<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


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 的所有的Specification或Scenario都會被執行
- 通過多個
Tag執行
gauge --tag "login,admin" specs
只有同時有login和adminTag的Specification或者Scenario才會被執行
- 執行含有空格的
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),把Specification或Scenario當做一個切面,在執行之前和執行之后做一些操作
- 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執行之前創建新的對象,該功能可以在配置中設置清除緩存的等級
