Как загрузить файл в Resassured с Java - PullRequest
0 голосов
/ 18 февраля 2019

У нас есть API, который берет файл из системы и показывает в приложении, для которого я пытаюсь автоматизировать с уверенностью и Java

Я попытался, изменив изображение на двоичный код, а затем добавивэто как параметр, который не работает.

Map<String, String> paramSample = new HashMap<>();
    paramSample.put("api_key", "A813302*************");
    paramSample.put("method", "my");
    paramSample.put("body", "{\n" +
            "  \"to\":\"91xxxxxxxx\",\n" +
            " \"type\": \"image\", \"image\" : {\"caption\" : \"{{caption}}\"},\n" +
            "\"callback\":\"{{callback}}\"\n" +
            "}");
    paramSample.put("from", "91xxxxxxx");
    paramSample.put("file","C:\\Users\\sobhit.s\\Pictures\\SMS-2047.png");
    RequestSpecification request = given();
    Response responseSample = request.params(paramSample).get(ExecutionConfig.BASE_URL).then().extract().response();
    String res=responseSample.prettyPrint();

Ответ -

{
    "status": "xxxx",
    "message": "Invalid file format. Upload valid file."
}

1 Ответ

0 голосов
/ 22 февраля 2019

Сначала, если вы не уверены, сделайте это в Почтальоне, а затем воссоздайте то же самое в коде.Таким образом, у вас будет почтальон, который продемонстрирует вашу проблему с кодированием.

Используйте .queryParam() только для параметров, а не для содержимого тела.Содержание тела должно быть меньше .body()

. Используйте .multiPart(), чтобы загрузить файл как квест из нескольких частей.Надеюсь это поможет.

given().queryParam(
            "api_key", "A813302*************", 
            "method", "my",
            "from", "91xxxxxxx")
            .body("{\n" +
            "  \"to\":\"91xxxxxxxx\",\n" +
            " \"type\": \"image\", \"image\" : {\"caption\" : \"{{caption}}\"},\n" +
            "\"callback\":\"{{callback}}\"\n" +
            "}")
            .multiPart(new File("C:/Users/sobhit.s/Pictures/SMS-2047.png"))
            .when()
            .get(ExecutionConfig.BASE_URL)
            .prettyPrint();
...