我正在使用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对象框架。
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。请任何人都可以为我提供更好的工作方式。
感谢您的期待。
答案 0 :(得分:1)
您需要注意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 template项目。