使用Google Maps API进行放心的简单测试

时间:2016-12-13 10:24:54

标签: rest api testing automated-tests rest-assured

我需要使用REST保证进行简单的测试。这是google maps API的链接 http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway+Mountain+View+CA&sensor=false

我需要验证该请求的statusCode是否正确(200)和字段: 状态:“确定” 类型是“street_address” 国家是“美国”

我写了这段代码,但部分工作

public class RestTest {
@Test
public void Test1() {


    RestAssured.get("http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway+Mountain+View+CA&sensor=false").then().
            statusCode(200).
            contentType(ContentType.JSON).
            body("status", equalTo("OK")).
            body("results.types", equalTo("street_address")).
            body("results.address_components.short_name", equalTo("US"));

检查状态代码,内容类型和身体的第一部分(状态= OK)运作良好并通过测试,但我在最后两次身体测试中遇到问题,他们失败了,我得到了:

JSON path results.types doesn't match.
Expected: street_address
Actual: [[street_address]]

1 个答案:

答案 0 :(得分:0)

在响应结果中是一个数组,address_components也是一个数组。 所以在你的json路径中你必须指定元素的索引。以下解决方案可行。

@Test
public void Test1() {
RestAssured.get("http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway+Mountain+View+CA&sensor=false").then().
          statusCode(200).
          contentType(ContentType.JSON).
          body("status", equalTo("OK")).
    body("results[0].types", contains("street_address")).
    body("results[0].address_components[5].short_name", equalTo("US"));

}