tavern的特点之一便是“使用YAML进行管理用例“,这极大的提高了用例的简易和直观,尤其是对于没有编程经验的人来说,降低了使用门槛。
本文会简单的介绍YAML的语法,以及Tavern使用YAML定义用例的用法
1. YAML语法
YAML 语言(发音 /ˈjæməl/ )的设计目标,就是方便人类读写。
它实质上是一种通用的数据串行化格式。
在yaml之前,程序大多使用json、xml、ini等格式进行数据的描述和传输,这些格式数据类型简单、可读性不好,yaml作为一种数据格式,但是可读性大大提高,方面人类直接编辑、查看里面的内容
yaml中的常用数据类型分为两类、八种:
-
容器类,可以讲存放其他类型
- 序列(Sequence):类似Python中列表
- 映射(Mapping):类似Python中的字典
-
标量类
-
空值(Null): 类似Python中的None
-
布尔值(Boolean):类似Python中的布尔值
-
整数(Integer):类似Python中的整数
-
浮点数(Floating Point):类似Python中的浮点数
-
字符串(String):类似Python中的字符串
-
时间(Timestamps):类似Python中的datetime
-
上面可以看出来,绝大部分的yaml数据类型和python的内置数据类可以一一对应,所以有Python基础非常方便理解yaml里的内容,下面看一个简单的例子
id: 1 # 用:表面这是字典中的一项
userinfo: # 下面的缩进表示都是userinfo的value
username: 三木 # 字符串可以省略引号
age: 18.9 # 如果加引号是字符串,不加引号是数字
books:
- 简爱 # 用- 表示这是列表中的一项
- 死亡诗社
- 圣经
等同于python中的
{
"id": 1,
"userinfo": {
"username": "三木",
"age": 18.9,
"books": ["简爱", "死亡诗社", "圣经"],
},
}
关于YAML的更多内容,可以参考这篇文章: YAML 语言教程 - 阮一峰的网络日志 (ruanyifeng.com)
2. Tavern的测试用例格式
Tavern专注与Restful API的接口中自动化测试,大家知道Restful API 是基于HTTP协议,报文分为请求request 和响应response,Tavern的测试用例也是这样:发生请求,验证响应。
以前文为例,每一个tavern测试用例,有2个部分组成:
- test_name: 用例名称
- stages: 用例阶段
其中用例阶是一个列表,由一个或多个阶段组成,每个阶段由3个部分组成
- name :步骤名称
- request: 接口请求参数
- response:预期的响应 (也就是断言)
所以上面的例子,我们可以这样理解
用例名称: 第一个Tavern测试用例
阶段步骤:
1. 验证接口返回指定状态码和json
其中接口的请求方式:
- 向
https://api.tttt.one/rest-v1/get_user_
发生GET
请求,
断言 :
-
状态码200,
-
响应结果是json,并且内容如下
-
{ "name": "sanmu", "age": 18, "email": "sanmu@qq.com" }
-
3. 动手写一个新的用例
基于前面的介绍,相信你已经知道tavern的用例主要通过request和response进行描述,接下来做个练习:
用例名称: 验证百度首页可以访问成功
步骤列表:
步骤1:
- 步骤名称:访问百度首页
- 请求方式:GET方法请求https://m.baid.com
- 断言: 状态码 是200
使用yaml文件进行描述:
test_name: 验证百度首页可以访问成功
stages:
- name: 验证接口返回指定状态码和json
request:
url: http://m.baidu.com
method: GET
response:
status_code: 200
将上述内容保存在test_baidu.tavern.yaml
文件中,然后启动pytest
依旧测试通过,撒花~~
4.公众号
这一次只是发送了最简单的GET请求,关于如何发送复杂的HTTP请求,在下一篇文章进行详细介绍
欢迎关注:测试开发研习社,你的支持就是我更新的动力