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进行检测。
- Dredd笔记
- Dredd
- Blueprint+Dredd+Gitlab-CI 实现持续集成
- 笔记
- 笔记
- 笔记
- 笔记
- 笔记
- 笔记
- 笔记
- 笔记
- 笔记
- 笔记
- 笔记
- 笔记
- 笔记
- 笔记
- 笔记
- 2017-01-16号 下午 socket客户端
- Centos7 nginx修改文件夹后 is forbidden (13: Permission denied)
- pyx文件 生成pyd 文件用于 cython调用
- 服务器
- html——列表标签
- Dredd笔记
- Java基础之基本数据类型转换
- 【Java】Java-version报错error:could not open'...jvm.cfg'
- java设计模式——装饰模式
- 浅谈oracle中row_number() over()分析函数用法
- Mongoose初体验
- deque容器基本操作
- 【caffe学习】caffe第二个比较典型的识别例子CIFAR_10的运行详解
- 【java】制造工厂里的开发工作