【问题标题】:How to send pathparams in restassured using RequestSpecBuilder?如何使用 RequestSpecBuilder 放心地发送路径参数?
【发布时间】:2021-04-15 18:30:26
【问题描述】:
public Response triggerPutRequestWithPathParamAndJsonBody(String basePath,String baseUri,String id,Object obj){
        System.out.println("Base path: "+basePath+"\n");
        System.out.println("Base URI: "+baseUri+"\n");

        String json = GsonUtils.toJsonFromJavaObject(obj);

        System.out.println("Request Body: \n"+json+"\n");
        RequestSpecBuilder requestSpecBuilder = new RequestSpecBuilder();
        requestSpecBuilder.addPathParam("id",id);
        requestSpecBuilder.setBasePath(basePath);
        requestSpecBuilder.setBaseUri(baseUri);
        requestSpecBuilder.setBody(json);
        requestSpecBuilder.setContentType(ContentType.JSON);

        RequestSpecification requestSpecification = requestSpecBuilder.build();
        Response response = RestAssured.given().spec(requestSpecification).put();
        return response;
    }

 public Response putRequestNew(String id, String name, String job){
        PutRequestPojo putRequestPojo = new PutRequestPojo();
        putRequestPojo.setName(name);
        putRequestPojo.setJob(job);
        String basePath = "https://reqres.in";
        String baseUri = "/api/users/{id}";
        Response response = apiCore.triggerPutRequestWithPathParamAndJsonBody(basePath,baseUri,id,putRequestPojo);
        return response;


    }

 @Test()
    public void putTestNew(){
        Response response = putRequest.putRequestNew("6", "cooper", "physicist");
        System.out.println("\nResponse: ");
        response.prettyPrint();
    }

运行上述测试方法时出现以下异常:

java.net.URISyntaxException: Illegal character in path at index 11: /api/users/{id}

我无法弄清楚我做错了什么。我不想将整个 URL 作为硬编码字符串传递给 requestspectbuilder。我应该如何使用 RequestSpecBuilder 的 .addPathParam() 传递路径参数以使其更通用。

【问题讨论】:

    标签: java api automation rest-assured qa


    【解决方案1】:

    请尝试使用以下代码动态传递路径参数:

    public Response putRequestNew(String id, String name, String job){
        PutRequestPojo putRequestPojo = new PutRequestPojo();
        putRequestPojo.setName(name);
        putRequestPojo.setJob(job);
        String basePath = "https://reqres.in";
         String baseUri = "/api/users/"+"{"+id+"}";
        Response response = apiCore.triggerPutRequestWithPathParamAndJsonBody(basePath,baseUri,id,putRequestPojo);
        return response;
    
    
    }
    

    如果我没记错的话,你错过了将“id”作为字符串传递并传递 直接作为路径参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-28
      • 2011-06-25
      • 1970-01-01
      • 2015-07-23
      • 1970-01-01
      • 1970-01-01
      • 2022-11-29
      • 1970-01-01
      相关资源
      最近更新 更多