Gauge——自动化测试工具

发表于:2021-3-03 09:35

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:夏天~    来源:博客园

分享:
  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<br>数字代表该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<br> //在所有的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执行之前创建新的对象,该功能可以在配置中设置清除缓存的等级。

      本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号