信息
在上周的会议上,同事们说,他们现在用java编写功能测试,产生大量的冗余代码,以及整个项目变得更加臃肿,有一个简单的模板工程快速建立功能测试的迫切需要。

然后我又想,为什么我们要用java做的功能测试

Node.js应该是一个不错的选择,有一个自然支持JSON,然后回到搜索GitHub,还真有相关项目:睾酮,那么这篇文章的博客。

服务器
要做demo,自然要有相应的服务器来支持。

这里我们选择Express作为服务器。

首先,我们建立一个服务器文件夹,建立一个新的package.json。

复制代码代码如下所示:
{
名称:酒窖
说明:酒窖应用程序
版本:0.0.1
私有:正确,
依赖项:{
Express:3
}
}




下次运行命令

复制代码代码如下所示:
NPM安装



所以快递就要安装了。

我们实现了几种简单的GET POST方法来做实验。

复制代码代码如下所示:
VaR表示=需要('express)
表示();

app.use(express.bodyparser());

app.get(你好功能(REQ,RES){
res.send(Hello World);
});

app.get(/功能(REQ,RES){
setTimeout(){()函数(
res.writehead(200,{ 'content-type:中/平原});
res.end();
},200);
});

app.get(/你好功能(REQ,RES){
如果(req.param(你好)!=未定义的){
res.writehead(200,{ 'content-type:中/平原});
res.end(你好!);
{人}
res.writehead(500,{ 'content-type:中/平原});
res.end(将后改);
}
});

app.post(/你好功能(REQ,RES){
setTimeout(){()函数(
res.writehead(200,{ 'content-type:中/平原});
res.end(req.param(消息的)消息的| |);
},100);
});


app.get( /用户,功能(REQ,RES){
Res.send(
{
{姓名:杰克},
{姓名:汤姆}
}
);
});

app.get( / /:用户ID功能(REQ,RES){
res.send({
身份证:1,
名称:节点js
说明:我是节点js
});
});

app.post( /用户/编辑功能(REQ,RES){
setTimeout(){()函数(
res.send({
身份:req.param('id'),
现状:1
});
},100);
});
(3000)app.listen;
Console.log ('Listening on port 3000... ;


睾酮
服务器已经设置好了,开始测试是很自然的。

项目接口的名称是优雅的,直接在代码上。

首先是测试基本功能。
复制代码代码如下所示:
VaR睾酮=需要('testosterone({ })端口:3000)
资产= testosterone.assert;

睾酮
获取(),函数(RES){
assert.equal(res.statuscode,200);
})

获取(),函数(RES){
assert.equal(res.statuscode,500);
})

。后(' /嗨,{数据:{消息:'hola} },{
现状:200
身体:'hola
});




然后对上面的用户进行了简单的测试。

复制代码代码如下所示:
VaR睾酮=需要('testosterone({ })端口:3000)
资产= testosterone.assert;

睾酮
获取(用户,函数(RES){)
无功expectres = {
{姓名:杰克},
{姓名:汤姆}
};

assert.equal(res.statuscode,200);
assert.equal(JSON.stringify(JSON.parse(res.body))、JSON.stringify(expectres));
})

获取(1)、函数(RES){

无功用户= JSON.parse(res.body);

assert.equal(res.statuscode,200);
Assert.equal (user.name, node JS);
assert.equal(user.description,我结JS );
})



下一步,如果您想在每次测试时对每个测试用例进行描述,那么您可以:

复制代码代码如下所示:
VaR睾酮=需要('testosterone ')({端口:3000,标题:测试用户API })
添加= testosterone.add
资产= testosterone.assert;

睾酮
添加(。
将用户ID授予+
当它有响应用户时+
然后应该返回用户JSON,

函数(CB){
testosterone.get( /用户/ 1,CB(功能(RES){)
无功expectres = { {
身份证:1,
名称:节点js
说明:我是节点js
};

assert.equal(res.statuscode,200);
assert.equal(JSON.stringify(JSON.parse(res.body))、JSON.stringify(expectres));
});
})


添加(。
给定一个帖子,用户信息到用户/编辑+
查找修改成功+
然后,它应该resturn状态1,

函数(CB){
testosterone.post( /用户/编辑{数据:,{编号:1,名称:改名} },CB(功能(RES){
VaR既= JSON.parse(res.body);
assert.equal(res.status,1);
});
}
)

运行(函数){()
要求('sys('done打印)!;
});



结论
通过上面的代码,你可以看到,用java长HTTP头,睾酮是非常简单的和优雅的。