最近刚开始学习 RestAssured,遇到一个问题,就是每次请求的时候都要设置 cookie,有没有一种方法在拿到 cookie 以后所有的接口都可以共用,不需要在设置
可以封装一个带 cookie 的发起请求的方法,比如第一个能拿到 cookie 请求依旧使用原来的框架的请求方式,拿到 cookie 之后,把 cookie 值传递给带 cookie 请求的方法,这样后续的请求就是用封装的请求方法,这样就可以一直使用一个 cookie,也不用每个接口再次设置 cookie 了
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 吧,自行封装搞熟练了,应该学习到的东西更多一点
感谢各位大佬回复
httpclient 就是请求接口的,restassured 除了调用 http 库请求接口,还有断言的功能,支持 json 模糊搜索语法。你理解为 restassured 把 httpclient 和 junit/testNG 部分功能搞一起了
不知道用的是什么测试框架,如果是 TestNG 的话,其本身提供了很多 AOP 接口,实现一下即可。或者在 @BeforeSuite / Class / Test ( 视你测试级别而定 ) 的方法中使用 ITestContext 设置 cookie,然后在需要的 case 中取出来也行。