最近刚开始学习 RestAssured,遇到一个问题,就是每次请求的时候都要设置 cookie,有没有一种方法在拿到 cookie 以后所有的接口都可以共用,不需要在设置
不知道用的是什么测试框架,如果是 TestNG 的话,其本身提供了很多 AOP 接口,实现一下即可。或者在 @BeforeSuite / Class / Test ( 视你测试级别而定 ) 的方法中使用 ITestContext 设置 cookie,然后在需要的 case 中取出来也行。
httpclient 就是请求接口的,restassured 除了调用 http 库请求接口,还有断言的功能,支持 json 模糊搜索语法。你理解为 restassured 把 httpclient 和 junit/testNG 部分功能搞一起了
感谢各位大佬回复
感谢大佬回复。 那我还是先研究 httpclient 吧,自行封装搞熟练了,应该学习到的东西更多一点
httpclient 偏底层,实际项目用一般都要自行封装各种调用方法,否则用起来要写不少代码,太繁琐了。
RestAssured 相对顶层一些,底层其实也是通过调用 httpclient 之类的 http 库实现功能的,但函数封装比较好,调用起来没那么繁琐,并且集成了一些断言、AOP 之类的能力,在接口测试领域的常见实践都可以无需二次封装,开箱即用。
楼主用过 httpclient 嘛?最近在学习 httpclient,发现大家都比较推荐 RestAssured,所以突然纠结是继续搞 httpclient,还是转向学习 RestAssured
可以封装一个带 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; } }