服务器接口自动化测试工具frisby.js
frisby.js是基于node.js和jasmine的自动化测试工具,可以很方便的测试服务器http get/post请求及其返回的json数据. 可以对json数据的类型和数值做判断.
首先需要安装node.js, 并且安装node.js的包管理器npm.
然后使用npm安装frisby和jasmine-node
npm install frisby -g
npm install jasmine-node -g
进入frisby的安装目录. 我是win10, 是装在 C:\users\USERNAME\node_modules\frisby 下面的.
在这个目录里新建一个测试用例的目录, 例如建立一个 ceshi 目录. 目录结构是: C:\users\USERNAME\node_modules\frisby\ceshi
[注意] 特别坑爹的是, 这些目录结构不能任意改变. 既不能把frisby目录复制到别的地方使用, 也不能在别的地方创建测试用例的目录. 否则, 测试用例依赖的各种文件找不到, 运行的时候就会报错MODULE找不到.
在ceshi目录中建立一个js文件, 以 spec.js 结尾, 如建立一个test_spec.js 文件
输入如下内容
var frisby = require('../lib/frisby');
//全局设置
frisby.globalSetup({
request: {
headers:{'content-type': 'application/json'}
}
});
frisby.create('登录get')
.get('http://apis.baidu.com/apistore/mobilenumber/mobilenumber?phone=15210011578')
.expectStatus(200)
.expectJSONTypes({
status: Number
})
.expectJSON({
status: 1
})
.toss();
在命令行, 进入 C:\users\USERNAME\node_modules\frisby 目录, 输入 jasmine-node ceshi 回车, 运行. 出现类似下面的结果. 说明测试没有通过.
C:\users\USERNAME\node_modules\frisby>jasmine-node ceshi
undefined
F
Failures:
1) Frisby Test: baidu
[ GET http://apis.baidu.com/apistore/mobilenumber/mobilenumber?phone=15210011578 ]
Message:
Error: Expected number '300202' to match number '0' on key 'errNum'
Stacktrace:
Error: Expected number '300202' to match number '0' on key 'errNum'
at _jsonContains (C:\r\test\node_modules\.frisby.DELETE\lib\frisby.js:1271:17)
at jasmine.Matchers.toContainJson (C:\r\test\node_modules\.frisby.DELETE\lib\frisby.js:1186:12)
at null.