用于测试rest api的nodejs测试框架
发布于 12 年前 作者 codelint 11258 次浏览 最后一次编辑是 8 年前

<p style=“text-indent: 20px”>一直不知道怎么测试rest api,或者说没有一个比较方便的方法来测试rest api。后来想了一下,测试一个api是否可行其实不过就是给予一些参数,然后发起一个请求,获得响应,检查返回的值是否与预想的一致,一致则正确</p> <br/><p style=“text-indent: 20px”>于是用nodejs写了一段代码,用来测是rest请求(http请求)。整体的思路,希望减少测试的逻辑代码量。即使提供测试数据成为编写测试用例的主要工作量。于是写了一个RestTester对象,用于接受测试数据,以及测试上下文。即只要提高测试数据和测试服务器的相关信息。</p> <br/> <br/><ul> <br/> <li>测试数据(case):</li> <br/><ul> <br/> <li>input(http请求数据):(http方法(GET/POST),请求时使用的headers,如果是post请提供body的数据,body为一个json,目前仅支持json格式的body)</li> <br/> <li>expect(预期值):预想要返回的结果(相应码,headers,json body)</li> <br/> <li>setup/before/after/teardown为该测试特定阶段执行的方法(可选)(具体意义见下文)</li> <br/></ul> <br/> <li>测试服务器的相关信息:</li> <br/><ul> <br/> <li>server(nodejs的server对象)(可选,不提供则服务器不由测试程序启动)</li> <br/> <li>host(主机名)</li> <br/> <li>port(端口)</li> <br/> <li>timeout(请求超时时间)</li> <br/> <li>encoding(编码)</li> <br/></ul> <br/></ul> <br/><p style=“text-indent: 20px”>下图为该测试框架的一个简单的流程图:<a href=“http://inotseeyou.com/wp-content/uploads/2011/12/testful.jpg”><img class=“aligncenter size-full wp-image-196” src=“http://inotseeyou.com/wp-content/uploads/2011/12/testful.jpg” alt=“这是一副关于testful的测试简单流程图” width=“654” height=“591” /></a></p> <br/><p style=“text-indent: 20px”>整个测试过程均串行执行,即测试用例是一个接一个进行测试,而非并行测试。各阶段附加的方法,也是串行执行。使每个测试用例间串行,主要考虑到测试用例与测试用例之间可能会共用同一个数据库,在setup和teardown可能会相互影响。</p> <br/><p style=“text-indent: 20px”>另外为每个阶段附加方法的形式有两种,一即写在测试用例的定义里(前面提到);还有就是通过RestTester的onSetup/onTeardown/onBefore/onAfter/onInit/onClose方法来添加,每个方法的一个参数,均为一个函数,当方法结束时,请调用这个函数,以告知,所添加的阶段方法执行完毕。如:</p> <br/> <br/><pre>var tester = new RestTester(…) <br/>tester.onSetup(functon(next, title, case){ <br/> //todo do what you want to do during setup period <br/> next(); <br/>});</pre> <br/><p style=“text-indent: 20px”>在每个阶段执行完后,RestTester都会触发相应的事件。</p> <br/><p style=“text-indent: 20px”>详细内容见:<a href=“https://github.com/codelint/testful” target="_blank">https://github.com/codelint/testful</a></p>

回到顶部