Java 如何使用rest assured在所有测试中使用全局标头请求

Java 如何使用rest assured在所有测试中使用全局标头请求,java,rest,api,rest-assured,rest-assured-jsonpath,Java,Rest,Api,Rest Assured,Rest Assured Jsonpath,我是rest assured的新手,我做了一个测试来提取访问令牌和一些其他参数,我想在所有其他测试的请求头中使用这些访问令牌 是否可以为我拥有的所有测试方法设置全局标头,或者让函数在每个测试中运行一次并注入所需的请求标头 @Test public void getAccessToken (){ Response body = given() .params("username", "test

我是rest assured的新手,我做了一个测试来提取访问令牌和一些其他参数,我想在所有其他测试的请求头中使用这些访问令牌

是否可以为我拥有的所有测试方法设置全局标头,或者让函数在每个测试中运行一次并注入所需的请求标头

 @Test
    public void getAccessToken (){
        Response body =
                given()
                        .params("username", "test@example.com","password","pass!","grant_type","password").post("https://example.test.com/Token")
                        .then()
                        .log().body()
                        .statusCode(200)
                        .extract().response();

        String access_token = body.path("access_token").toString();
        String token_type = body.path("token_type").toString();
        String refresh_token = body.path("refresh_token").toString();
        String Authorization = "bearer " + access_token;    }

}
更新 我在下面添加了下面的部分,但是现在得到400个状态码而不是200个,我似乎遗漏了一些东西,下面我添加了一个示例,其中一个是有效的,另一个使用RequestSpecification不起作用

工作如期进行

public class PermissionTests  {

    Response body =
            given()
                    .params("username", "user@example.com","password","pass!","grant_type","password").post("https://test.example.com/Token")
                    .then()
                    .log().body()
                    .statusCode(200)
                    .extract().response();

    String access_token = body.path("access_token").toString();
    String token_type = body.path("token_type").toString();
    String refresh_token = body.path("refresh_token").toString();
    String Authorization = "bearer " + access_token;


@Test
public void addNewGraph(){

    given()
            .header("officeId",1)
            .header("organizationId",1)
            .header("refreshToken",refresh_token)
            .header("Authorization",Authorization)
            .when()
            .get("https://test.example.com/api/cases/recent")
            .then()
            .log().body()
            .statusCode(200);
    }
})
这个示例不起作用,它返回400,知道im使用的是TestNG而不是JUnit

  public class PermissionTests  {

private static RequestSpecification requestSpec;

@BeforeClass
public static void AuthSetup() {

    Response body =
            given()
                    .params("username", "user@example.com","password","pass!","grant_type","password").post("https://test.example.com/Token")
                    .then()
                    .log().body()
                    .statusCode(200)
                    .extract().response();

    String access_token = body.path("access_token").toString();
    String token_type = body.path("token_type").toString();
    String refresh_token = body.path("refresh_token").toString();
    String Authorization = "bearer " + access_token;

    HashMap<String, String> defaultHeader = new HashMap<>();
    defaultHeader.put("officeId","1");
    defaultHeader.put("organizationId","1");
    defaultHeader.put("refresh_token",refresh_token);
    defaultHeader.put("Authorization", Authorization);

        RequestSpecBuilder builder = new RequestSpecBuilder();
        builder.addHeader("officeId", "1");
        builder.addHeader("organizationId", "1");
        builder.addHeader("refresh_token", refresh_token);
        builder.addHeader("Authorization", Authorization);

        requestSpec = builder.build();


 // specification = new RequestSpecBuilder()
////                .addHeaders(defaultHeader)
//                .addHeader("officeId","1")
//                .addHeader("organizationId","1")
//                .addHeader("refresh_token",refresh_token)
//                .addHeader("Authorization",Authorization)
//                .build();

}

@Test
public void addNewGraph(){

    given()
            .spec(requestSpec)
            .log().all()
            .when()
            .get("https://test.example.com/api/cases/recent")
            .then()
            .log().body()
            .statusCode(200);
    }
})
公共类许可测试{
私有静态请求规范requestSpec;
@课前
公共静态void AuthSetup(){
响应体=
给定()
.params(“用户名”user@example.com“,”密码“,”通过“,”授权类型“,”密码“)。post(“https://test.example.com/Token")
.然后()
.log().body()
.状态代码(200)
.extract().response();
字符串access_-token=body.path(“access_-token”).toString();
字符串token_type=body.path(“token_type”).toString();
字符串refresh_-token=body.path(“refresh_-token”).toString();
String Authorization=“bearer”+访问令牌;
HashMap defaultHeader=新的HashMap();
defaultHeader.put(“officeId”,“1”);
defaultHeader.put(“organizationId”,“1”);
defaultHeader.put(“刷新令牌”,刷新令牌);
defaultHeader.put(“授权”,授权);
RequestSpecBuilder=新的RequestSpecBuilder();
建筑商添加标题(“办公ID”、“1”);
builder.addHeader(“organizationId”,“1”);
addHeader(“刷新令牌”,刷新令牌);
builder.addHeader(“授权”,授权);
requestSpec=builder.build();
//规范=新的RequestSpecBuilder()
////.addHeader(defaultHeader)
//.addHeader(“officeId”、“1”)
//.addHeader(“组织ID”,“1”)
//.addHeader(“刷新令牌”,刷新令牌)
//.addHeader(“授权”,授权)
//.build();
}
@试验
public void addNewGraph(){
给定()
.spec(requestSpec)
.log().all()
.when()
.get(“https://test.example.com/api/cases/recent")
.然后()
.log().body()
.状态代码(200);
}
})
这是上次方法的日志

{
    "access_token": "eyJhbGciOiJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNobWFjLXNoYTI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1laWRlbnRpZmllciI6IjE2MSIsImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL25hbWUiOiJha2FtZWxAdHJhY2tlcnByb2R1Y3RzLmNvbSIsImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vYWNjZXNzY29udHJvbHNlcnZpY2UvMjAxMC8wNy9jbGFpbXMvaWRlbnRpdHlwcm92aWRlciI6IkFTUC5ORVQgSWRlbnRpdHkiLCJBc3BOZXQuSWRlbnRpdHkuU2VjdXJpdHlTdGFtcCI6ImJmODQ1MTEwLTk0ZDEtNGE0Yi05YzkxLThlNWQ1NDI2YTYxMyIsImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL2FkbWluIjoiVHJ1ZSIsImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL3NpZCI6IjE2MSIsImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL2VtYWlsYWRkcmVzcyI6ImFrYW1lbEB0cmFja2VycHJvZHVjdHMuY29tIiwiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNS8wNS9pZGVudGl0eS9jbGFpbXMvb3JnYW5pemF0aW9uSWQiOiIxIiwiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNS8wNS9pZGVudGl0eS9jbGFpbXMvb2ZmaWNlSWQiOiIxIiwicmVxdWlyZU1mYSI6IkZhbHNlIiwibmJmIjoxNTg4MTQ3MzMwLCJleHAiOjE1ODgxOTA1MzAsImlzcyI6Imh0dHBzOi8vdHJhY2tlcnByb2R1Y3RzLmNvbSIsImF1ZCI6ImM3MzJhY2U4MzRjZDQ4NTE5MGEzZTNhMjM2YTZhYzFkIn0.6pbDhYmyAXX9z46By4HxrCg_4HKRCSGq42FdhFoyA6s",
    "token_type": "bearer",
    "expires_in": 43199,
    "refresh_token": "d64dde50sd4be16ef209dcc5ss",
    "userName": "user@example.com",
    "userId": "sds",
    "deviceId": "eesdsde20d93e",
    "maxStringFieldLength": "10000",
    "opfs": "null",
    ".issued": "Wed, 29 Apr 2020 08:02:10 GMT",
    ".expires": "Wed, 29 Apr 2020 20:02:10 GMT"
}
Request method: GET
Request URI:    https://example.test.com/api/cases/recent
Proxy:          <none>
Request params: <none>
Query params:   <none>
Form params:    <none>
Path params:    <none>
Headers:        officeId=1
                organizationId=1
                refresh_token=d64dde50sd4be16ef209dcc5ss
                Authorization=bearer eyA1L2lkZW50aXR5L2NsYWltcy9uYW1laWRlbnRpZmllciI6IjE2MSIsImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzsdvY2xhaW1zL25hbWUiOiJha2FtZWxAdHJhY2tlcnByb2R1Y3RzLmNvbSIsImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vYWNjZXNzY29udHJvbHNlcnZpY2UvMjAxMC8wNy9jbGFpbXMvaWRlbnRpdHlwcm92aWRlciI6IkFTUC5ORVQgSWRlbnRpdHkiLCJBc3BOZXQuSWRlbnRpdHkuU2VjdXJpdHlTdGFtcCI6ImJmODQ1MTEwLTk0ZDEtNGE0Yi05YzkxLThlNWQ1NDI2YTYxMyIsImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL2FkbWluIjoiVHJ1ZSIsImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL3NpZCI6IjE2MSIsImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL2VtYWlsYWRkcmVzcyI6ImFrYW1lbEB0cmFja2VycHJvZHVjdHMuY29tIiwiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNS8wNS9pZGVudGl0eS9jbGFpbXMvb3JnYW5pemF0aW9uSWQiOiIxIiwiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNS8wNS9pZGVudGl0eS9jbGFpbXMvb2ZmaWNlSWQiOiIxIiwicmVxdWlyZU1mYSI6IkZhbHNlIiwibmJmIjoxNTg4MTQ3MzMwLCJleHAiOjE1ODgxOTA1MzAsImlzcyI6Imh0dHBzOi8vdHJhY2tlcnByb2RdZCI6ImM3MzJhY2U4MzRjZDQ4NTE5MGEzZTNhMjM2YTZhYzFkIn0.6pbDhYmyAXX9z46By4HxrCg_4HKRCSGq42FdhFoyA6s
                accept=application/json, text/plain, */*
Cookies:        <none>
Multiparts:     <none>
Body:           <none>

{
    "message": "GENERAL.ERROR",
    "errorId": "637237441331863542"
}
{
“访问令牌”:"2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2 2.2.2.2.2.2.2.2 2.2.2.2.2.2.2 2 2.2.2 2 2.2.2 2 2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2 FZLM1PY3JV2.中国6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6杜瓦WrlbNRPdHKVy2xhaw1Zl3NpZci6Ije2Msiimh2HllbwfzlNhTbHnVy2xhaw1Zl2Vtyw1Zl2VyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyZc6I6Ij6Ij2FyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyWyQOIIXIIWICMVxDWLYZU6IMMZHBHNLIWIBIBMJMIJOXNTG4MTQMZMZMWLCJLEOJE1ODGXOTA6IMH0DHBZOI8VDHHY2TLCB2Y3RZLMNVBSISIMF1ZCI6IMMZHY2U4MZRJZDQ4NTE5GEZZTNH2YTZYFKIN0.6PBDHYMYMYMYMYMYMYZZZF6ZF6BYMYMYMYMYMYZZZZFYKYKYKYKYKYKYKYKYKYKYKYKYKYKY,
“令牌类型”:“承载者”,
“到期日”:43199,
“刷新令牌”:“d64dde50sd4be16ef209dcc5ss”,
“用户名”:”user@example.com",
“用户ID”:“sds”,
“设备ID”:“EESDE20D93E”,
“maxStringFieldLength”:“10000”,
“opfs”:“null”,
“.发布日期:”“2020年4月29日星期三08:02:10 GMT”,
.expires:“星期三,2020年4月29日20:02:10 GMT”
}
请求方法:获取
请求URI:https://example.test.com/api/cases/recent
代理:
请求参数:
查询参数:
表格参数:
路径参数:
标题:officeId=1
organizationId=1
刷新令牌=d64dde50sd4be16ef209dcc5ss
授权=持票人Eyal2lkzw50axr5l2sywltcy9uyw1lawrlbnrpzmlcii6ije2msimh0dha6y9zy2h2h2bwfzlnhtb3jn1dzsdvy2xhaw1zl2h2h2h2h2th2th2th2th2th2n2th2n2th2c1zl2n2h2h2h2h2h2h2h2h2h2h2h2h2h2h2bw2th2th2th2th2c2c2c2c2n2n2c2n2c2n2n2n2c2n2n2n2n2n2n2n2c2n2n2n2n2n2n2n2n2n2n2n2n2n2n2n2n2n2n2n2n2n2n2nGFTCCI6IMODQ1MTEWLK0ZDETNGE0YYY05YZKXLTHLNWQ1NDIYXYMYSIMH0DZY2HLBWFZLNHTBHnVYXAUB3JNL3DZIWMDUVMDUVAWRLBNRPDHKVY2XHAW1ZL2FKBKWIVHJ1ZISIMH0DHY2ZHY2FZLZLNHTBHY2HY2HY2HY2ZY2HY2HY2FYZY2HY2WY2WY2WY2HYWY2HYZY2WY2HY2HYZY2VY2HYZY2HYZY2LZY2VY2FY2HYWWWWY2VY2VY2VY2HY2LZYZYZY2LZY2LZY2VY2VY2HY2VY2LZYVychjvzhvjdhmuy29Tiiwiahr0cdovl3njavtyxmueg1sc29hcc5vcmcvd3mvmjawns9pzgvudgl0es9jbgfpbxmvb3jnyw5emf0aw9uswqioiixiiiiiiiwiahr0cdo3njavtyxmueg1sc29hcc5vcmcvd3mvmjawns8pzg8pzgvgmd0es9pzmjawns9pzmowg2zmqoiixiixiixijjjjjjjjjzmzzmzzmzlzzzzzlzzmjjjjjjjjjjzlzzlzlzmzzzzlzmjjjjjjjjjjjjjzzlzlzlzlzlzlzlzlzzzzz5GezztnhmjM2YTzhyzfkin0.6PbDhymyAxx9Z46By4HxRCG4HkrCSGQ42Fdhfoya6S
accept=application/json,text/plain*/*
曲奇饼:
多部分:
正文:
{
“消息”:“GENERAL.ERROR”,
“错误ID”:“637237441331863542”
}
来自浏览器的原始请求标头

<
public class PermissionTests {

private static RequestSpecification requestSpec;

@BeforeClass
public static void AuthSetup() {

    Response body = given().log().all()
            .params("username", "user@example.com", "password", "pass!", "grant_type", "password")
            .post("https://test.example.com/Token").then().log().body().statusCode(200).extract().response();

    String access_token = body.path("access_token").toString();
    String token_type = body.path("token_type").toString();
    String refresh_token = body.path("refresh_token").toString();
    String Authorization = "bearer " + access_token;

    RequestSpecBuilder builder = new RequestSpecBuilder();
    builder.addHeader("officeId", "1");
    builder.addHeader("organizationId", "1");
    builder.addHeader("refresh_token", refresh_token);
    builder.addHeader("Authorization", Authorization);

    requestSpec = builder.build();

}

@Test
public void addNewGraph() {

    given().spec(requestSpec).log().all().when().get("https://test.example.com/api/cases/recent").then().log()
            .body().statusCode(200);
}
}
RestAssured.requestSpecification = new RequestSpecBuilder()
     .build().header("Authorization", "Bearer " + token);