Будьте уверены, получая ноль для фактического значения, но почтальон показывает, что значение существует - PullRequest
0 голосов
/ 11 мая 2018

Я автоматизирую API Google Места, используя предоставленные гарантии (Java), и у меня возникают проблемы с моими результатами, которые я, кажется, не понимаю.

Так, в основном, когда я использую почтальон для выполнения запроса GET для следующего URL:

https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=-33.8670522,151.1957362&radius=1500&type=restaurant&keyword=cruise&key=AIzaSyDWz5aGXygtrt3hsn99yXv_oocw09PSOH

Выводит результаты так:

    "html_attributions": [],
    "results": [
        {
            "geometry": {
                "location": {
                    "lat": -33.8585858,
                    "lng": 151.2100415
                },
                "viewport": {
                    "northeast": {
                        "lat": -33.85723597010728,
                        "lng": 151.2113913298927
                    },
                    "southwest": {
                        "lat": -33.85993562989272,
                        "lng": 151.2086916701072
                    }
                }
            },
            "icon": "https://maps.gstatic.com/mapfiles/place_api/icons/bar-71.png",
            "id": "8e980ad0c819c33cdb1cea31e72d654ca61a7065",
            "name": "Cruise Bar, Restaurant & Events",
            "opening_hours": {
                "open_now": true,
                "weekday_text": []
            },

... //more json
}

Однако, когда я проверяю ответ на этот запрос, я уверен, что в моем утверждении есть ошибка. В нем говорится:

Exception in thread "main" java.lang.AssertionError: 1 expectation failed.
JSON path results[0].geometry.viewport.northeast.lat doesn't match.
Expected: -33.85723597010728
  Actual: null

Я не уверен, почему «Actual» отображает ноль, так как почтальон показывает, что есть ответ, и кажется, что мой код правильный и проверяет правильное место для ответа:

package rest.basic.testing;

import io.restassured.RestAssured;
import io.restassured.http.ContentType;

import static io.restassured.RestAssured.given;
import static io.restassured.RestAssured.when;
import static org.hamcrest.Matchers.equalTo;

public class GetRequestSample {

    //Full URL

    /*https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=-33.8670522,151.1957362
     &radius=1500&type=restaurant&keyword=cruise&key=AIzaSyDWz5aGXygtrt3hsn99yXv_oocw09PSOHE */

    //BaseURI
    static String baseURI = "https://maps.googleapis.com";

    public static void main(String[] args) {
        searchPlaceInGoogle();
    }

    public static void searchPlaceInGoogle() {
        RestAssured.baseURI = baseURI;

        //In the given() we put the parameters which you can see by matching the below with the full URL displayed above

        given()
        .param("location", "33.8670522,151.1957362")
        .param("radius", "1500")
        .param("type", "restaurant")
        .param("key", "AIzaSyDWz5aGXygtrt3hsn99yXv_oocw09PSOHE");
       //In the when we place in our resources which is after the url and before the ?      
        //In the then is our assertions
        when()
        .get("maps/api/place/nearbysearch/json")        
        .then().assertThat().statusCode(200).and()
        .contentType(ContentType.JSON).and()
        .body("results[0].geometry.viewport.northeast.lat", equalTo("-33.85723597010728"));

        //To prove the code above is running successfully
        System.out.println("Request is executed successful");
    }


}

Кто-нибудь может понять, почему фактический результат показывает ноль?

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

Когда бы вы ни сравнивали равенство по широте или долготе, оно никогда не пройдет, так как базовые значения постоянно меняются.

Использование containString решает эту проблему и должно работать для вас:

.body("results[0].geometry.viewport.northeast.lat", containString("-33.85723597010728"));
0 голосов
/ 11 мая 2018

Вы можете использовать функцию регистрации в REST, гарантированно в случае невозможности проверить, что действительно было в теле ответа или нет: протоколировать, если проверка не пройдена

...