zoukankan      html  css  js  c++  java
  • gauge自动化框架踩坑(二):运行方式

    一. step、scenario、spec、suite

    开始看gauge可能有点困惑,因为官网给的例子example.spec如下,看的是一脸懵逼

    # Specification Heading
    
    This is an executable specification file. This file follows markdown syntax.
    Every heading in this file denotes a scenario. Every bulleted point denotes a step.
    
    To execute this specification, run
    
        gauge run specs
    
    
    * Vowels in English language are "aeiou".
    
    ## Vowel counts in single word
    
    tags: single word
    
    * The word "gauge" has "3" vowels.
    
    
    ## Vowel counts in multiple word
    
    This is the second scenario in this specification
    
    Here's a step that takes a table
    
    * Almost all words have vowels
         |Word  |Vowel Count|
         |------|-----------|
         |Gauge |3          |
         |Mingle|2          |
         |Snap  |1          |
         |GoCD  |1          |
         |Rhythm|0          |

    可以看到,上述markdown描述文件中都有哪些关键词:specifition、scenario、step、tag等等,用类比的方法比较好理解一点:

    • step: 一个场景中的每一步,比如登录场景,登录是一步,退出是一步。类似于类中的方法
    • scenario:场景,比如登录场景。类似于类
    • spe:一个场景的集合。类似于python中的模块,即py文件
    • suite:测试套件,可以裂解为多个模块的集合,即一个项目

    二. 运行方式

    我们以官方给出的模板项目为例:

    这是一个关于英语中元音的项目,首先看example.spec,在一开始有个Specifition Heading,用的是markdown中的<H1>标签进行描述的

    # Specification Heading

    当然你也可以用双下划线:

    Specification Heading
    
    ==============

    下面这句话是说,这是一个可执行的spec file(你可以类比成py文件)。这个文件遵循markdown语法。这个文件中每一个##都表示一个场景,每一个*都表示一个step。执行这个spec文件的方法是 gauge run specs(类似于cmd中运行python文件:python py文件)。这里需要注意gauge run specs,它运行的是整个specs目录,当该目录下有多个spec时,每一个spec文件都会得到执行

    This is an executable specification file. This file follows markdown syntax.
    Every heading in this file denotes a scenario. Every bulleted point denotes a step.
    
    To execute this specification, run
    
        gauge run specs

    关于运行方式,官网至少给出了四种运行方法:

    • 运行多个specs目录
    • 运行一个specs目录下所有的spec文件
    • 运行一个specs目录下指定的spec文件
    • 运行一个spec文件下指定的scenarios

    可以看到,范围是越来越小。我们对这四种方式分别举四个例子:

    第一种,运行多个specs目录

    gauge run specs-dir1/ specs-dir2/ specs-dir3/

    官网还给出一个说明,就是specs的路径可以通过设置环境变量来指定,这样会将默认的值变为自定义的值。默认值在env下面的default.properties中:

    第二种,运行一个specs目录下所有的spec文件

    gauge run specs

    第三种,运行一个specs目录下指定的spec文件

    gauge run specs/spec1.spec

    如果要运行多个指定的spec文件,还可以这样:

    gauge run specs/spec1.spec specs/spec2.spec specs/spec3.spec

    第四种:运行一个spec文件下指定的scenarios

    这里看官网可能有点懵,因为官网说了,你可以根据spec文件下的scenario中的行号,来指定单个的scenario,并且还给出了一个login_test.spec的例子,意思是在下面的spec文件中,使用 gauge run specs/login_test.spec:4 命令,可以执行一个Admin Login场景

    但是我们看关于场景的定义:一个场景首先要有一个Heading,然后至少包含一个或多个step。当时就有点疑惑了,明明使用的是行号,行号对应的是step,为什么不说运行特定的step,而要说运行特定的场景呢?

    但是细细看一下官网文档,会发现关于step的定义,还有很多值得琢磨的地方,step不是孤立的,它依附于一个场景或concepts,事实上,当你观察gauge的测试报告也能发现这一点,gauge基于BDD,它的最小的测试单元是场景,而非step。当多个step都隶属于同一个场景,那么当你从中拿出一个stpe来执行的时候,实际上执行的就是当前的场景。同样gauge run specs/login_test.spec:3或gauge run specs/login_test.spec:5是一样的效果

    还可以运行多个不同文件中指定的场景

    gauge run specs/helloworld.spec:3 specs/anotherhelloworld.spec:5

    执行同一个spec文件中的不同场景

    gauge run specs/spec1.spec:3 specs/spec1.spec:7

     
     
     

    参考文章

    https://docs.gauge.org/latest/execution.html

    https://blog.csdn.net/amoscn/article/details/80472143

     
  • 相关阅读:
    美政府备忘录强推DNS安全扩展协议 java程序员
    安全使用网上银行 享受在线购物时尚生活 java程序员
    渗透测试介绍 java程序员
    sdut2465其实玩游戏也得学程序(bfs+优先队列)
    usaco1.44Mother's Milk
    sdut2493Constructing Roads
    poj3687Labeling Balls
    usaco1.51Number Triangles(数字三角形)
    sdut2497A simple problem
    usaco2.11Ordered Fractions
  • 原文地址:https://www.cnblogs.com/my_captain/p/11107145.html
Copyright © 2011-2022 走看看