使用Rest Assured上传图片无数据发送也无异常如何解决?
问题排查方案
当前返回结果所有字段为空,说明后端未接收到上传的文件参数,可按以下顺序排查:
- 文件路径合法性校验
Java字符串中反斜杠属于转义字符,你代码中写的C:\Users\######\Downloads\38250987.jpeg会被转义识别为非法路径,要改成双反斜杠C:\\Users\\######\\Downloads\\38250987.jpeg或者用正斜杠C:/Users/######/Downloads/38250987.jpeg。另外需要提前判断文件是否存在、是否有读取权限,避免空文件上传:File testUploadFile = new File("C:\\Users\\######\\Downloads\\38250987.jpeg"); // 提前校验文件状态 if(!testUploadFile.exists() || !testUploadFile.isFile()){ throw new RuntimeException("上传文件不存在,请检查路径配置"); } - 指定multiPart对应的参数名
你现在直接调用multiPart(testUploadFile)用的是Rest Assured默认的参数名,而后端接收文件的参数一般是自定义的(常见约定名如file),需要和后端接口约定的参数名一致才能被正确解析,修改为对应参数名即可:.multiPart("file", testUploadFile) - 开启请求日志排查实际请求内容
在given()后添加log().all()可以打印完整的请求头、请求体内容,直接确认文件是否被正常发送:Response response = given() .log().all() .multiPart("file", testUploadFile) .when() .post("/api/product/zOPePEpj/file");
修复后完整代码示例
@Test public void uploadFile() { File testUploadFile = new File("C:\\Users\\######\\Downloads\\38250987.jpeg"); if(!testUploadFile.exists() || !testUploadFile.isFile()){ throw new RuntimeException("上传文件不存在,请检查路径"); } RestAssured.baseURI = "http://localhost:8080"; Response response = given() .log().all() .multiPart("file", testUploadFile) .when() .post("/api/product/zOPePEpj/file"); System.out.println(response.getStatusCode()); System.out.println(response.asString()); }
内容的提问来源于stack exchange,提问作者Qa Automation
相关产品推荐
相关产品推荐

