Dredd笔记

来源:互联网 发布:感情洁癖 知乎 编辑:程序博客网 时间:2024/06/15 07:30

0 前言

Dredd可以用于测试所写的web api与实际运行的系统是否一致,可以搭配API Blueprint一起使用,并支持各种CI。

通过阅读Dredd的官网,把自己的理解写一写,还希望得到大家的指正。


1 安装

可以通过npm直接安装dredd工具,

npm install -g dredd

2 概述

Dredd的使用过程大致可以分为几个阶段:

  • 编写API
  • 实现API
  • 测试API

2.1 编写

Dredd支持两种web api的规范

  • API Blueprint
  • Swagger

由于现实业务使用的是API Blueprint,所以之后都以这个的规范为例。


2.2 实现

这个过程就可大可小了,可以是个helloworld,可以只是为了测试而写的demo,可以是整个模块。
Dredd的功能就是测试2.2实现的API与2.1的Web API文档是否吻合。


2.3 测试

通过之前全局安装的dredd,可以直接在命令行输入指令完成测试,也可以先配置好Dredd的config文件,直接运行。

首先,将工程跑起来

npm start

之后运行dredd命令,参数api.apib表示Web API文档的文件名,之后的URL表示待测试的服务运行在的地址和端口

dredd api.apib http://localhost:3000

2.3.1 配置参数

通过dredd init可以交互式的配置dredd的运行参数、环境等等。

还有一种方法是先配置dredd.yml文件,将参数写入文件后存放到工程的根目录下,之后再想使用dredd时,直接不带任何参数地输入命令dredd即可开始测试。


2.4 Hooks

Hooks用于测试时,加入“钩子”,在程序运行的不同阶段,执行特定的代码,辅助测试。
dredd的hook有很多,分别代表了不同的执行阶段。

  • beforeAll 只执行一次,做一些测试开始前的预处理工作
  • 对于每一个交互事务分别执行
    • 测试开始
    • beforeEach
    • before
    • 发送HTTP请求
    • 接收HTTP响应
    • beforeEachValidation
    • beforeValidation
    • 执行validation
    • after
    • afterEach
    • 测试结束
  • afterAll 只执行一次,做一些收尾工作

3 运行过程

  • 读取API文档,同时检查是否有语法错误
  • 根据文档描述的request和response,生成期望获取的结果
  • 针对API文档,构造请求,测试API
  • 检测收到的响应与期望是否一致
  • 生成报告

4 检测标准

4.1 响应头的检测

  • response必须包含所有在文档中指明的header信息
  • headers的验证不区分大小写
  • 只验证对内容商议有用的值
  • 其余header值可以有所区别

4.2 响应体的检测

对于JSON格式的响应体,只验证JSON结构,
对于其余格式的响应体,当做普通文本处理。

为了便于检测,当文档中有JSON响应体的时候,需要将Schema,Attributes写在Body之前。


5 检测前的准备工作

需要适当的修改所写的API文档,以便更好地使用dredd工具。

将URI中的所有需要的参数都写入文档中并提供样例,这样Dredd可以自动填充URI模板,构造请求。


6 HTTP事务的处理流程

Dredd目前只支持单个请求单个响应的事务模式,即:

+ Request+ Response

而Blueprint可以支持一个Request多个Response,所以这种情况下,Dredd只会选择第一个Response进行检测。

0 0
原创粉丝点击