跳到主要内容
CNode

用于测试rest api的nodejs测试框架

社区
Ccodelint发布于 15 年前
0120150

一直不知道怎么测试rest api,或者说没有一个比较方便的方法来测试rest api。后来想了一下,测试一个api是否可行其实不过就是给予一些参数,然后发起一个请求,获得响应,检查返回的值是否与预想的一致,一致则正确


于是用nodejs写了一段代码,用来测是rest请求(http请求)。整体的思路,希望减少测试的逻辑代码量。即使提供测试数据成为编写测试用例的主要工作量。于是写了一个RestTester对象,用于接受测试数据,以及测试上下文。即只要提高测试数据和测试服务器的相关信息。




  • 测试数据(case):


    • input(http请求数据):(http方法(GET/POST),请求时使用的headers,如果是post请提供body的数据,body为一个json,目前仅支持json格式的body)

    • expect(预期值):预想要返回的结果(相应码,headers,json body)

    • setup/before/after/teardown为该测试特定阶段执行的方法(可选)(具体意义见下文)


  • 测试服务器的相关信息:


    • server(nodejs的server对象)(可选,不提供则服务器不由测试程序启动)

    • host(主机名)

    • port(端口)

    • timeout(请求超时时间)

    • encoding(编码)



下图为该测试框架的一个简单的流程图:这是一副关于testful的测试简单流程图


整个测试过程均串行执行,即测试用例是一个接一个进行测试,而非并行测试。各阶段附加的方法,也是串行执行。使每个测试用例间串行,主要考虑到测试用例与测试用例之间可能会共用同一个数据库,在setup和teardown可能会相互影响。


另外为每个阶段附加方法的形式有两种,一即写在测试用例的定义里(前面提到);还有就是通过RestTester的onSetup/onTeardown/onBefore/onAfter/onInit/onClose方法来添加,每个方法的一个参数,均为一个函数,当方法结束时,请调用这个函数,以告知,所添加的阶段方法执行完毕。如:



var tester = new RestTester(...)

tester.onSetup(functon(next, title, case){
//todo do what you want to do during setup period
next();
});

在每个阶段执行完后,RestTester都会触发相应的事件。


详细内容见:https://github.com/codelint/testful

查看回复

回复 (0)

暂无回复,成为第一个参与讨论的人。

参与回复

登录后即可参与回复。登录