当前位置:网站首页>技术分享 | 接口自动化测试如何处理 Header cookie
技术分享 | 接口自动化测试如何处理 Header cookie
2022-08-09 12:20:00 【Hogwarts_测试】
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();
}
}
边栏推荐
- 注释、关键字、标识符的区别你知道吗?
- 腾讯欲成育碧最大股东/ 米哈游招NLP内容生成研究员/ AI发现四千余物种濒临灭绝...今日更多新鲜事在此...
- 900页数学论文证明旋转的黑洞不会爆炸,丘成桐:30多年来广义相对论首次重大突破...
- h264协议
- 国产抗新冠口服药每瓶不超300元/ 我国IPv6网络全面建成/ 谷歌入局折叠屏手机...今日更多新鲜事在此...
- 在已打开图片上加水印(文字)
- 用场景定义硬件,英码科技破解“边缘计算”密码
- How should the acceptance criteria for R&D requirements be written?| Agile Practices
- Golang学习之路(五):Golang的函数
- MongoDB-查询中$all的用法介绍
猜你喜欢
非科班AI小哥火了:他没有ML学位,却拿到DeepMind的offer
【无标题】
2022牛客多校(六)M. Z-Game on grid
两分钟录音就可秒变语言通!火山语音音色复刻技术如何修炼而成?
Flutter Getting Started and Advanced Tour (3) Text Widgets
水能自发变成“消毒水”,83岁斯坦福教授:揭示冬天容易得流感的部分原因...
又有大厂员工连续加班倒下/ 百度搜狗取消快照/ 马斯克生父不为他骄傲...今日更多新鲜事在此...
苹果Meta都在冲的Pancake技术,中国VR团队YVR竟抢先交出产品答卷
腾讯欲成育碧最大股东/ 米哈游招NLP内容生成研究员/ AI发现四千余物种濒临灭绝...今日更多新鲜事在此...
How should the acceptance criteria for R&D requirements be written?| Agile Practices
随机推荐
We really need DApp?Really can't meet our fantasy App?
阻塞、非阻塞、多路复用、同步、异步、BIO、NIO、AIO 一锅端
十分钟教会你如何使用VitePress搭建及部署个人博客站点
How should the acceptance criteria for R&D requirements be written?| Agile Practices
h264协议
Scala Advanced (7): Collection Content Summary (Part 1)
智驾科技完成C1轮融资,此前2轮已融4.5亿元
Extract EventBus encapsulation to base class using annotations
WebView injects Js code to realize large image adaptive screen click image preview details
2022 Niu Ke Duo School (6) M. Z-Game on grid
中科院打脸谷歌:普通电脑追上量子优越性,几小时搞定原本要一万年的计算...
史上最猛“员工”,疯狂吐槽亿万富翁老板小扎:那么有钱,还总穿着同样的衣服!...
世界第4疯狂的科学家,在103岁生日那天去世了
微服务架构的核心关键点
Compensation transaction and idempotency guarantee based on CAP components
Flutter入门进阶之旅(十)Dialog&Toast
两个链表相加
Go Affair, How to Become a Gopher and Find a Go Job in 7 Days, Part 1
AQS同步组件-FutureTask解析和用例
用场景定义硬件,英码科技破解“边缘计算”密码