Я тестирую веб-службы, используя java, RestAssured, отличную нотацию и т.д.
У меня есть отдельные модули, которые зависят друг от друга с точки зрения прохождения методов запроса. таких как POST, PUT. когда я хочу выполнить POST-запрос в модуле, в json-схеме мне нужно передать существующий идентификатор из двух разных модулей в файл. т.е. 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);
}
Примечание: с помощью этого кода я могу заменить один идентификатор, но он не заменит второй. Пожалуйста, пусть кто-нибудь предоставит мне лучший способ заставить его работать.
Спасибо в ожидании.
Вы должны заметить, что метод 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 template), у вас есть, лучше иметь заполнители вместо использования numbers.eg
{
"site_id": {site_id},
"permission": "admin.client.add",
"group_id": {group_id}
}
Также вы можете проверить этот проект шаблона JSON, если вам нужно сделать больше вещей на шаблоне json.