zoukankan      html  css  js  c++  java
  • 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中的一个可执行部分
    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 的所有的SpecificationScenario都会被执行
    • 通过多个Tag执行
    gauge --tag "login,admin" specs
    只有同时有loginadmin 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),把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执行之前创建新的对象,该功能可以在配置中设置清除缓存的等级

      

  • 相关阅读:
    MySql性能调优三(explain/desc执行计划)
    MySql性能调优二(BTree、B+Tree与索引数据结构)
    MySql性能调优一(存储引擎InnoDB,MyISAM)
    PHP 数组底层实现原理
    哈希算法及其应用场景
    散列表、散列函数和散列冲突
    PHP中的XML解析的5种方法
    特殊的线性表:递归
    Navicat12破解教程(Navicat_Keygen_Patch_By_DFoX V5.6)
    svn服务端安装、迁移教程、Eclipse切换svn连接库
  • 原文地址:https://www.cnblogs.com/nelson-hu/p/6343277.html
Copyright © 2011-2022 走看看