繁体   English   中英

我如何使用Java,RestAssured测试Web服务自动替换Json目标文件中的两个单独的ID

[英]How can i automatically replace two separate ID's in Json object file using java, RestAssured testing web services

我正在使用Java,RestAssured,Groovy表示法等测试Web服务。

我有单独的模块,这些模块在传递请求方法方面相互依赖。 例如POST,PUT。 当我想在模块上执行POST请求时,在json模式中,我必须将来自两个不同模块的现有ID传递到文件中。 即分别为site_id和group_id。

以下是我存储在文件中的json模式:

{
"site_id": 10,
"permission": "admin.client.add",
"group_id": 3
}

下面是我的代码:来自我的Page类,就像使用Page对象框架一样。

    public String postpermission(String siteid, String grpid)
    throws FileNotFoundException, IOException, ParseException {

    Object obj = parser.parse(new FileReader(path
            + "/resources/permission/postpermission.json"));
    String d = obj.toString();

    Object objecc = parser.parse(d.replaceFirst("3", grpid));

    Object objec = parser.parse(d.replaceFirst("10", siteid));
    JSONObject jsonPostBody = (JSONObject) objec;

    jsonPostBody = (JSONObject) objecc;

    return postRequest(jsonPostBody, permissionURI, 201, "data.id",
            "postpermission()", false);

    }

下面是我的测试类的代码:

@Test
public void postpermission() throws FileNotFoundException, IOException,
        ParseException {

    String siteid = sites.postsites();
    String grpid = group.postGroup();
    String permid = permission.postpermission(siteid, grpid);
    permission.deletepermission(permid);

    }

注意:使用此代码,我可以替换一个ID,但不能替换第二个ID。 请任何人为我提供更好的方法来使其正常工作。

谢谢您的期待。

您需要注意, replaceFirst方法不会更改原始String,它将以新String的形式返回结果。

因此,在您的情况下,您需要将第一个replaceFirst结果重新分配回变量d 代码如下:

d = d.replaceFirst("3", grpid);

Object objec = parser.parse(d.replaceFirst("10", siteid));

或者您可以使用更简单的一种:

Object objec = parser.parse(d.replaceFirst("3", grpid).replaceFirst("10", siteid));

还有一个关于JSON模式的建议(我想称其为json模板),最好有占位符而不是使用数字。例如

{
"site_id": {site_id},
"permission": "admin.client.add",
"group_id": {group_id}
}

另外,如果您需要在JSON模板上执行更多操作,则可以签出此JSON模板项目。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM