Cookie(复数形态:Cookies)是某些网站为了辨别用户身份而储存在用户本地终端上的数据。在接口测试过程中,如果网站采取了 Cookie 认证的方式,那么发送的请求需要附带 Cookie,才会得到正常的响应的结果。接口自动化测试也是同理,需要在构造接口测试用例时加入 Cookie。
实战练习
对于要对 Cookie 进行验证的网站发起请求,如果在请求过程中没有传递 Cookie 数据,则会返回错误的响应结果。下面的实战以雪球为例。
没有 Cookie 数据的场景
下方示例对雪球的 url 发起一个 get 请求,在请求过程中没有添加 Cookie 数据。
-
>>> import requests
-
>>>
-
>>> url="https://xueqiu.com/stock/search.json"
-
>>> params={"code": "sogo", "size": "3", "page": "1"}
-
>>> header={ "Accept": "application/json",
-
... "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) \
-
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
-
... }
-
>>> r = requests.get(url, params=params, headers=header)
-
>>> r.text
-
'{"error_description":
-
"遇到错误,请刷新页面或者重新登录帐号后再试",\
-
"error_uri":"/stock/search.json",
-
"error_code":"400016"}'
-
>>>
由上面的例子可以看到,如果在请求过程中没有添加 Cookie 数据,结果报错,要求登录账号。
添加 Cookie 的场景
接下来,在请求过程中添加正确的 Cookie 信息,即可得到正常的响应信息。
Python 版本
同样访问雪球,通过关键字参数 cookies 传递正确的 Cookie 数据。
-
>>> import requests
-
>>>
-
>>> url="https://xueqiu.com/stock/search.json"
-
>>> params={"code": "sogo", "size": "3", "page": "1"}
-
>>> header={ "Accept": "application/json",
-
... "User-Agent": "Mozilla/5.0 \
-
(Macintosh; Intel Mac OS X 10_14_6)\
-
AppleWebKit/537.36 (KHTML, like Gecko) \
-
Chrome/77.0.3865.90 Safari/537.36",
-
... }
-
>>> cookies={
-
"xq_a_token":"...省略..."
-
}
-
>>> requests.get(url,
-
params=params, headers=header, cookies=cookies).text
-
'{"q":"sogo","page":1,"size":3,"stocks":
-
[{"code":"SOGO","name":"搜狗",
-
"enName":"","hasexist":"false","flag":null,
-
"type":0,"stock_id":1029472,"ind_id":0,
-
"nd_name":"通讯业务","ind_color":null,
-
"_source":"sc_1:1:sogo"}]}'
Java 版本
在 Java 中,可以使用 cookie() 方法传入雪球所需要的 Cookie 数据信息。
-
import static io.restassured.RestAssured.*;
-
public class Requests {
-
public static void main(String[] args) {
-
given().
-
params("code", "sogo", "size", 3, "page", 1).
-
cookie("xq_a_token", "...省略...").
-
when().
-
get("https://xueqiu.com/stock/search.json").
-
then().statusCode(200).log().all();
-
}
总结:
感谢每一个认真阅读我文章的人!!!
作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方进群即可自行领取。