java - 如何使用 java、RestAssured 测试 Web 服务自动替换 Json 对象文件中的两个单独的 ID

原文 标签 java json groovy

我正在使用 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/

相关文章:

java - Struts 2 如何在每个 Action 之前运行验证

java - 尝试在恢复到应用程序时写入空对象引用上的字段 'int android.app.Fragment.mNextAnim'

json - jq 以不同的方式对 KEY 和 VALUES 进行排序 - 如何以相同的顺序枚举它们?

java - 使用ANT编译groovy脚本时不支持的major.minor 51.0版本

java - 制作包含测试文件的 Gradle 项目

java - Groovy NullPointerException on “gradle appRun”

java - 如何注入(inject)自定义 BeanFactory

java.lang.ClassNotFoundException : org. apache.http.util.Args - 我应该添加哪个依赖项?

java - 使用自定义 jackson 序列化器替换Enum值

java - JSON对齐其循环相同的项目