Gauge----自动化测试工具
* 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
![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 的所有的Specification
或Scenario
都会被执行
- 通过多个
Tag
执行
gauge --tag "login,admin" specs
只有同时有login
和admin
Tag的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
执行之前创建新的对象,该功能可以在配置中设置清除缓存的等级