* 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中的一个可执行部分
  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.Tags

  • 用于标记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 的所有的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当做一个切面,在执行之前和执行之后做一些操作
  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执行之前创建新的对象,该功能可以在配置中设置清除缓存的等级

  

Gauge----自动化测试工具的更多相关文章

  1. 初识gauge自动化测试框架(二)

    看到一些同学对该工具有点一兴趣,那么我将继续介绍Gauge自动化测试工具. Gauge本质上一个BDD(Behavior Driven Development)测试框架.所以,首先你要了解BDD的操作 ...

  2. 微软自动化测试工具palywright

    前言 我们介绍许多e2e的自动化测试工具 一类是基于 Selenium 的测试框架: robot framework gauge SeleniumBase seldom(我自己维护的) 另一类是基于J ...

  3. 手机GUI自动化测试工具选择

    (Graphical User Interface,简称 GUI,又称图形用户接口) 我们需要针对自身产品的需求,从中选取一款合适的工具来实现自动化.对于移动客户端GUI的自动化而言,需要保证选取的工 ...

  4. Android 手机自动化测试工具有哪几种?

    1.Monkey是Android SDK自带的测试工具,在测试过程中会向系统发送伪随机的用户事件流,如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序进行压力测试,也有日志输出.实际上该工 ...

  5. 前端自动化测试工具doh学习总结(二)

    一.robot简介 robot是dojo框架中用来进行前端自动化测试的工具,doh主要目的在于单元测试,而robot可以用来模仿用户操作来测试UI.总所周知,Selenium也是一款比较流行的前端自动 ...

  6. 前端自动化测试工具doh学习总结(一)

    前言 项目中需要用到前端自动化测试,自己被当作一个探针研究了下目前用的比较多的web自动化测试工具.一开始研究的是的selenium,但由于项目使用了大量的dijit控件,写起testCase来很费劲 ...

  7. 录制简单的自动化测试工具SlikMobile初体验

    今天朋友推荐了款自动化测试工具SlikMobile,下载了个试用了下,感觉还是很容易入门和上手的,感觉和testin的工具差不多,跨平台,多语言支持,支持图片.文本和Native Class三种对象方 ...

  8. 自动化测试工具QTP和SilkTest横向PK(转)

    转自:http://www.uml.org.cn/Test/201405212.asp?artid=1686 众所周知,自动化测试工具曾几何时三足鼎立,Mercury QTP/WinRunner系.I ...

  9. 常用自动化测试工具介绍(支持B/S、C/S)

    一.功能测试工具1.QTP测试工具 全名HP QuickTest Professional software ,最新的版本为HP QuickTest Professional 11.0 QTP是qui ...

  10. 老李分享:android app自动化测试工具合集

    老李分享:android app自动化测试工具合集   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨 ...

随机推荐

  1. PHP开发丨3个简单的方法处理emoji表情

    一般Mysql表设计时,都是用UTF8字符集的.把带有emoji的昵称字段往里面insert一下就没了,整个字段变成了空字符串.这是怎么回事呢?原来是因为Mysql的utf8字符集是3字节的,而emo ...

  2. Effective Java 第三版——35. 使用实例属性替代序数

    Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...

  3. html头部规范书写

    建立标准化的声明(DOCTYPE)和head 以前的网页,甚至大型的门户网站也连个声明也没有,就仅仅是<html>,现在要做的就是给你的网页加上声明,规范head区域,让搜索引擎和喜欢你的 ...

  4. Nginx负载均衡和反向代理的配置和优化

    负载均衡 负载均衡是由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位, 反向代理 是指以代理服务器来接受internet上的请求,然后将请求转给内部的服务器 常见的负载均衡 1. ...

  5. java字符串替换的问题

    今天工作中遇到一个问题,需要输出mongodbObject中的部分内容,当我转换成字符串以后出现了好像无法替换的问题,经过验证,发现并非是不能替换,只是想法错误而已. package demo; /* ...

  6. pat1021-1030

    1021求树的直径网上一搜就有,但是我不太理解 只需要一共求两次的dfs的论调,好吧我收回这句话,好想脑补了下,第一次dfs有多个最长点,只需要搜一个就行QAQ.这么看来我写麻烦了 #include& ...

  7. 异常---ment.getElementById("searchForm").submit is not a function

    今天在写代码的时候JS一直报上面这个错.搞了半天一直想不明白 .我看别的页面都是这样写了就是没有一点错.. 可能是写了一个晚上的代码..头有点晕..后来终于找到原因了..浪费我两个小时啊..杯具.. ...

  8. 异常-----freemarker.template.TemplateException

    一,案例一 1.1.错误描述 五月 30, 2014 11:33:57 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严重: Templ ...

  9. DirectSound---3D环境

    DirectSound对于单声道的Wav文件(或者说对于单声道的PCM音频数据)提供了内置3D音效的模拟,你能够控制每一个声源和收听者的立体位置,对移动的物体应用多普勒效果等等.在单个应用程序中,可以 ...

  10. RobotFramework下的http接口自动化Get Response Body关键字的使用

    Get Response Body 关键字在上面已经有用到了,服务器端在处理完成了发出的http请求后,会给出对应的响应结果,那么Get Response Body这个关键字就是来获取响应结果中的主体 ...