自动化Web API REST服务的测试

时间:2013-09-17 19:45:20

标签: json rest testing asp.net-web-api automated-tests

您为REST服务推荐哪种测试/自动化测试(基于ASP.NET WebAPI)? 当然还有单元测试,但除此之外,有必要确保在使用某个版本后,对该特定版本的任何进一步更改都会暴露出兼容的json(我们假设向json添加新字段对于客户端)。

2 个答案:

答案 0 :(得分:1)

对于REST API的测试,我使用Robot Framework和(好)Requests library

我提出了如下测试:

*** settings ***
Library  Collections
Library  requests

*** test cases ***
simpleRequest
${result} =  get  http://echo.jsontest.com/framework/robot-framework/api/rest
Should Be Equal  ${result.status_code}  ${200}
${json} =  Set Variable  ${result.json()}
${framework} =  Get From Dictionary  ${json}  framework
Should Be Equal  ${framework}  robot-framework
${api} =  Get From Dictionary  ${json}  api
Should Be Equal  ${framework}  rest

我在blog post中提供了更多详细信息。

答案 1 :(得分:0)

对于REST服务,我通常会尝试在QUnit(一个Javascript测试框架)中设置一些测试,以配合单元测试。我发现它适用于这类事情。下面是一个检查从REST服务返回的JSON的片段(使用jQuery进行调用)。

asyncTest("Test Some JSON Call", function() {
    var url = "http://localhost:5555/myservice";
    rest_test_jsonp(url, function(data, status){
        ok(data != null);
        ok(data.some_array.length > 0);
    });
});

function rest_test_jsonp(url, callback) {
   $.jsonp({
      "url": url+"&callback=?",
      "success": function(data, status, message) {
          callback(data, status, message);
          start();
      },
      "error": function(data, status, message) {
          callback(data, status, message);
          start();
      }
    });
}

它还允许您在HTML页面中运行这些测试,这对于向利益相关者演示功能很有用。