如何使用Rest Assured将多个文件作为输入传递给api

时间:2020-07-20 12:39:44

标签: java spring-boot rest-assured restapi

在下面的此方法中,我正在对本地运行的API进行API调用,该API仅接受一个文件作为请求,但是有任何可能的方法可以使用Rest Assured在运行时动态地使API接受多个文件作为请求时间基于该API的请求?例如如何在运行时动态地在Rest Assured中将多个文件添加为API请求?

    public String restTest() {
        String resp = RestAssured.given().multiPart("file", new File("C:/Local/file/path/LocalFiles/file.txt")).when().post("http://localhost:4444/local/upload").then().assertThat().statusCode(200).and().extract().body().asString();

    return resp.toString();
        
    }

3 个答案:

答案 0 :(得分:1)

public static void main(String[] args) throws MalformedURLException {

        Response response;
        RequestSpecification request = RestAssured.given().header("content-type", "multipart/form-data");
        for (int i = 1; i <= 2; i++) {
            request.multiPart("file", new File("D:/testtemplates98_" + i + "Data.xlsx"));// File parameters will be
                                                                                            // dynamic
        }
        response = request.post(new URL("https://jquery-file-upload.appspot.com/"));
        System.out.println(response.getBody().asString());
}

答案 1 :(得分:0)

请放心,使用构建器模式,这样您就可以像堆叠文件一样

given().
         multiPart("file1", new File("/home/johan/some_large_file.bin")).
         multiPart("file2", new File("/home/johan/some_other_large_file.bin")).
         multiPart("file3", "file_name.bin", inputStream).
         formParam("name", "value").
expect().
         body("fileUploadResult", is("OK")).
when().
         post("/advancedFileUpload");

,因此您可以发送多个文件。

答案 2 :(得分:0)

File files[] = getFileList();
RequestSpecification request = RestAssured.given().contentType(ContentType.MULTIPART_FORM_DATA.toString()).request();
for (File file: files) {
  request.multiPart("files", new File(file.getAbsolutePath()));
}
request.post().then().statusCode(200);