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

 
原文地址:https://www.cnblogs.com/my_captain/p/11107145.html