问答 求助 RestAssured 做接口测试时怎么做到所有请求共同一个 cookie

tacy · 2021年12月03日 · 最后由 铃音 回复于 2022年01月31日 · 3943 次阅读

最近刚开始学习 RestAssured,遇到一个问题,就是每次请求的时候都要设置 cookie,有没有一种方法在拿到 cookie 以后所有的接口都可以共用,不需要在设置

共收到 7 条回复 时间 点赞

可以封装一个带 cookie 的发起请求的方法,比如第一个能拿到 cookie 请求依旧使用原来的框架的请求方式,拿到 cookie 之后,把 cookie 值传递给带 cookie 请求的方法,这样后续的请求就是用封装的请求方法,这样就可以一直使用一个 cookie,也不用每个接口再次设置 cookie 了

Example

package Tools;


import io.restassured.specification.RequestSpecification;

import static BaseTest.BaseAPI.conFig;
import static io.restassured.RestAssured.given;

public class RequestWithCookie {
    /**
     * 获取到的cookie写入配置文件
     * 再次读取
     * 使用requestWithCookie代替given
     * @return
     */
    public static RequestSpecification requestWithCookie() {
        String cookie = conFig.getConfig("cookie"); 
        RequestSpecification request =given().cookie("cookie",cookie);
        return request;
    }

}

楼主用过 httpclient 嘛?最近在学习 httpclient,发现大家都比较推荐 RestAssured,所以突然纠结是继续搞 httpclient,还是转向学习 RestAssured😂

httpclient 偏底层,实际项目用一般都要自行封装各种调用方法,否则用起来要写不少代码,太繁琐了。

RestAssured 相对顶层一些,底层其实也是通过调用 httpclient 之类的 http 库实现功能的,但函数封装比较好,调用起来没那么繁琐,并且集成了一些断言、AOP 之类的能力,在接口测试领域的常见实践都可以无需二次封装,开箱即用。

陈恒捷 回复

感谢大佬回复。😀 那我还是先研究 httpclient 吧,自行封装搞熟练了,应该学习到的东西更多一点

tacy #5 · 2021年12月06日 Author

感谢各位大佬回复

httpclient 就是请求接口的,restassured 除了调用 http 库请求接口,还有断言的功能,支持 json 模糊搜索语法。你理解为 restassured 把 httpclient 和 junit/testNG 部分功能搞一起了

不知道用的是什么测试框架,如果是 TestNG 的话,其本身提供了很多 AOP 接口,实现一下即可。或者在 @BeforeSuite / Class / Test ( 视你测试级别而定 ) 的方法中使用 ITestContext 设置 cookie,然后在需要的 case 中取出来也行。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册