Как я могу автоматически заменить два отдельных идентификатора в объектном файле Json, используя java, веб-сервисы тестирования RestAssured

1

Я тестирую веб-службы, используя 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);

    }

Примечание: с помощью этого кода я могу заменить один идентификатор, но он не заменит второй. Пожалуйста, пусть кто-нибудь предоставит мне лучший способ заставить его работать.

Спасибо в ожидании.

Теги:
groovy

1 ответ

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 template), у вас есть, лучше иметь заполнители вместо использования numbers.eg

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

Также вы можете проверить этот проект шаблона JSON, если вам нужно сделать больше вещей на шаблоне json.

  • 0
    Ваше решение отлично сработало для меня. я не мог понять, что могу расширить метод replaceFirst, как вы это сделали. Большое спасибо за вашу помощь и время.
  • 0
    Если это решит вашу проблему, вы можете принять ответ .

Ещё вопросы

Сообщество Overcoder
Наверх
Меню