Gauge从入门到精通——[2]语法

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/amoscn/article/details/80472143

为了让大家对gauge语法有更好的理解,我以一部大家都喜欢地电视《鹿鼎记》为例。

梗概

gauge语法结构

gauge语法是基于markdown。

这里写图片描述

解释

  • test suite:测试套件,可以理解为一个测试项目 。包含一个或者多个spec文件;
  • spec:spec(.spec或者 .md)文件,一系列测试场景的集合,通常是指一个文件;
  • scenario:测试场景(我更愿意叫它:用户故事),通常包含多个步骤;
  • step:测试步骤,指明这一个步骤内容,告诉别人要做什么。通常和代码实现关联。
  • tags: 标签,打上标签的spec或者scenario可以单独执行。
  • concept:多个步骤组合而成,又可以做为一个步骤。
  • parameters:参数,gauge的参数比较丰富,后面详说。

举例

# 鹿鼎记

tags: the.deer.and.the.cauldron

spec下的步骤
* 开始看电视

## 第一回

tags: episode_1
* 主角 "韦小宝" 降临
* 他乡遇故知 "陈近南" ,成为他的徒弟

## 第二回

tags: episode_2
* 主角 "韦小宝" 降临
* 联合 "乾隆" 打败 "鳌拜"


## 第三回

tags: episode_3

* 主角 "韦小宝" 降临
* 认识许多漂亮女孩
     |girl  |age|
     |------|---|
     |双儿   |17 |
     |沐剑屏 |18 |
     |苏荃   |25 |
     |阿珂   |18 |
     |建宁公主|20 |
     |曾柔   |20 |
     |方怡   |22 |

___
* 关机睡觉

specification

specification是一个 .spec或者.md文件的一级标题,如

# 鹿鼎记

或者

鹿鼎记
==========

一个spec文件只允许有一个一级标题

scenarios

scenarios是spec文件内的二级标题,通常一个spec文件可以包含多个二级标题,比如

## 第一回

或者

第二回
-----------

step

step是指测试步骤,他是以*格式开头。如

* 主角 "韦小宝" 降临

concept

concept可以聚合多个步骤组成一个步骤,以供spec使用,上面《鹿鼎记》的例子没有,我在下面补充上。

新建一个cpt文件
example.cpt,内容如下

# 喜欢 <girl>, 并和她结婚
* 遇到漂亮的 <girl>
* 追求到她,并同她结婚

spec文件如何使用concept呢?
我们在spec文件新建一个scenario,添加步骤

## 第四回

* 主角 "韦小宝" 降临
* 喜欢 "双儿", 并和她结婚

双儿会作为参数,从.spec传递到.cpt。详细内容,我们在实战里细说。

tags

tags是指标签,可以这么理解,我想看电视《鹿鼎记》 那么给鹿鼎记加个标签,然后我可以只执行这个标签。如果我想看鹿鼎记的某一集,那么我可以只执行这一集的标签即可。

tags: the.deer.and.the.cauldron
tags: episode_1

parameters

简单参数

韦小宝便是简单参数,在步骤里传递的

* 主角 "韦小宝" 降临

动态参数

请看上面concept这一节,< girl>表示动态参数

.cpt

# 喜欢 <girl>, 并和她结婚
* 遇到漂亮的 <girl>
* 追求到她,并同她结婚

.spec

## 第四回

* 主角 "韦小宝" 降临
* 喜欢 "双儿", 并和她结婚

表格参数

表格参数,很明显是指参数是以表格的形式列明,然后步骤里面可以逐个取出使用。
如:

* 认识许多漂亮女孩
     |girl  |age|
     |------|---|
     |双儿   |17 |
     |沐剑屏 |18 |
     |苏荃   |25 |
     |阿珂   |18 |
     |建宁公主|20 |
     |曾柔   |20 |
     |方怡   |22 |

文件参数

文件参数,在示例里面没有写出来,在此处单独做说明。

csv文件参数

csv文件可以代替spec里面的表格参数,看上去比较简洁,但不明了。因为参数全部在csv文件里

* 认识许多漂亮女孩
     |girl  |age|
     |------|---|
     |双儿   |17 |
     |沐剑屏 |18 |
     |苏荃   |25 |
     |阿珂   |18 |
     |建宁公主|20 |
     |曾柔   |20 |
     |方怡   |22 |
* 认识许多漂亮女孩 <table:girl.csv>

csv内容如下:

girl,age
双儿,17
沐剑屏,18
苏荃,25
阿珂,18
建宁公主,20
曾柔,20
方怡,22

上面的步骤作用完全一样

txt文件参数

txt文件的作用是代替静态参数的传入,gauge会自动将读取到的文件内容做为参数传给底层代码实现。

* 主角 "韦小宝" 降临
* 主角 <file:file.txt> 降临

file.txt的内容为

韦小宝

上面的两个步骤作用完全一样

tear down

tear down表面解释是拆除,可以理解为数据清理。若有tear down则每执行一个scenario都会在最后执行tear down
它是以三个或者更多的_下划线组成,比如

___
* 关机睡觉

注释

无任何符号开头的句子便是注释,比如

这里是注释

猜你喜欢

转载自blog.csdn.net/amoscn/article/details/80472143