我正在使用 java、RestAssured、groovy 表示法等测试 Web 服务。
我有单独的模块,它们在传递请求方法方面相互依赖。例如 POST、PUT。当我想对模块执行 POST 请求时,在 json 模式中,我必须将现有 id 从两个不同的模块传递到文件中。即分别为 site_id 和 group_id。
下面是我存储在文件中的 json 模式:
{
"site_id": 10,
"permission": "admin.client.add",
"group_id": 3
}
下面是我的代码:来自我的页面类,因为我正在使用页面对象框架。
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,但不能替换第二个。请任何人都可以为我提供更好的方法来使其工作。
感谢期待。
最佳答案
您需要注意 replaceFirst
方法不会更改原始字符串,它会将结果作为新字符串返回。
因此,在您的情况下,您需要重新分配第一个 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 template如果您需要在 json 模板上做更多的事情,项目。
关于java - 如何使用 java、RestAssured 测试 Web 服务自动替换 Json 对象文件中的两个单独的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25164159/