首页 > 解决方案 > 如何在放心的测试用例中重用 oauth2 令牌

问题描述

假设我有一个这样的测试用例

given().
    auth().oauth2(API_TOKEN).
    param("name", "new name").
when().
     post(API_HOST + "/create").
then().
    statusCode(200);

按照此示例https://github.com/rest-assured/rest-assured/wiki/Usage#specification-re-use我能够创建这样的方法

public static RequestSpecification setBaseUri() {
    RequestSpecBuilder builder = new RequestSpecBuilder();
    builder.setBaseUri(API_HOST);
    return builder.build();
}

现在测试用例变成了这样

given().
    spec(setBaseUri()).
    auth().oauth2(API_TOKEN).
    param("name", "new name").
when().
     post("/create").
then().
    statusCode(200);

但是我怎样才能通过指定 API_TOKEN 的 oauth2 传递身份验证,这样我也可以删除行 auth().oauth2(API_TOKEN)。从所有测试用例?

这也是可以通过 TestRule 完成的事情,因此甚至可以删除 line spec(..) 吗?

标签: javarest-assured

解决方案


您可以像这样在规范中添加 auth 和 param:

RequestSpecification requestSpec = new RequestSpecBuilder().
        setContentType(ContentType.JSON).
        addHeader("Authorization", "yourtoken").
        addParam(yor param). // or you can add body like set.body
        build();

推荐阅读