在做接口测试时候, 个别接口需要自定义请求的信息头,比如常用的sessionid 。cookie,客户端类型,都需要放在信息头管理其中。
headers 定制请求信息
比如下面这个接口需要 传入信息头
请求地址: https://movie.douban.com/j/search_subjects
请求方法:GET
请求header:
{
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36"
}
请求参数:
{
"type": "movie",
"tag": "豆瓣高分",
"page_limit": 50,
"page_start": 0
}
上面的接口需要用到请求头信息。不管是get请求还是post请求,封装请求头信息,统一放在headers参数中。
如果上面这个接口不加信息头。会报错。
def test_with_headers():
url = 'https://movie.douban.com/j/search_subjects'
query_data ={
"type": "movie",
"tag": "豆瓣高分",
"page_limit": 50,
"page_start": 0
}
# 发送get请求
r= requests.get(url,params=query_data)
print(f"豆瓣电影请求的状态码: {r.status_code}")
print(f'豆瓣电影接口的返回结果: {r.json()}')
if __name__ == '__main__':
test_with_headers()
代码执行会报错。
这个接口必须要定制信息头。 定制信息头的方式如下:
# 导入 requests 模块
import requests
def test_with_headers():
url = 'https://movie.douban.com/j/search_subjects'
query_data ={
"type": "movie",
"tag": "豆瓣高分",
"page_limit": 50,
"page_start": 0
}
header={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36"
}
# 发送get请求 headers 是固定的值,指定信息头
r= requests.get(url,params=query_data,headers=header)
print(f"豆瓣电影请求的状态码: {r.status_code}")
print(f'豆瓣电影接口的返回结果: {r.json()}')
if __name__ == '__main__':
test_with_headers()
运行可以看到执行的结果。
所有的请求头中需要什么数据,就放在字典中。 一般做自己公司的接口时,如果需要定制请求头,开发会告诉你的。只需要将数据放在字典中,发送请求的时候传递给 headers 即可。
定制Cookie
个别接口需要传入cookie信息。
接口地址: http://47.100.175.62:3000/user/refresh_token
请求方式:POST
请求数据类型: application/json
请求body : 无
请求头信息:
{
"Cookie":"node_club=s%3A61a7b0aa7bf9484d71441c3f%24%24%24%24.icyhiBztp6Z5HhuC%2BpQdB8b7CX6gH9m%2B4m4peyE8U%2Bg; connect.sid=s%3AXREUgHrRxwW6jxg3YERKZLcFXJ9BngIO.Qj8vmoPTF8DUKy214ZS2s%2BOMxE%2BgYM3SypxOPfVe3Gc"
}
import requests
def test_with_cookies():
url = "http://47.100.175.62:3000/user/refresh_token"
body = {} # body为空
cookie_header ={
"Cookie":"node_club=s%3A61a7b0aa7bf9484d71441c3f%24%24%24%24.icyhiBztp6Z5HhuC%2BpQdB8b7CX6gH9m%2B4m4peyE8U%2Bg; connect.sid=s%3AXREUgHrRxwW6jxg3YERKZLcFXJ9BngIO.Qj8vmoPTF8DUKy214ZS2s%2BOMxE%2BgYM3SypxOPfVe3Gc"
}
# 发送请求 将cookies 信息放入到 headers中
r = requests.post(url,json=body,headers=cookie_header)
print("刷新token 接口返回结果",r.status_code,r.json())
if __name__ == '__main__':
test_with_cookies()
执行结果
思维导图
附件
今天上课的代码
testdemo.zip
作业
使用python 实现如下几个接口,
要求能够跑通即可。
"""
cnode 社区接口作业
"""
import requests
baseurl = ""
token = ""
def test_add_topic():
"""
创建话题
:return:
"""
def test_edit_topic():
"""
编辑话题
:return:
"""
def test_collect_topic():
"""
收藏话题
:return:
"""
def test_uncollect_topic():
"""
取消收藏
:return:
"""
def test_reply_topic():
"""
评论话题
:return:
"""
def test_up():
"""
点赞
:return:
"""
if __name__ == '__main__':
print("现在开始进行cnode社区主要接口流程测试:")
test_add_topic()
test_edit_topic()
test_collect_topic()
test_uncollect_topic()
test_reply_topic()
test_up()
使用简单的方式完成作业。
"""
cnode 社区接口作业
"""
import requests
# 定义请求地址前缀
baseurl = "http://47.100.175.62:3000/api/v1"
token = "e80fce05-b85c-445e-a26e-66172deffb24"
def test_add_topic():
"""
创建话题
:return:
"""
url = baseurl+"/topics"
body_data = {
"accesstoken": token,
"title":"hehehehehehe",
"tab":"ask",
"content":"xxxxxxxxxxxx"
}
r = requests.post(url,json=body_data)
print("新建主题:",r.status_code,r.json())
def test_edit_topic():
"""
编辑话题
:return:
"""
url = baseurl + "/topics/update"
body_data = {
"accesstoken": token,
"topic_id":"625cc91ceb0fc111c4a0d584",
"title": "hehehehehehe",
"tab": "ask",
"content": "xxxxxxxxxxxx"
}
r = requests.post(url, json=body_data)
print("编辑主题:", r.status_code, r.json())
def test_collect_topic():
"""
收藏话题
:return:
"""
url = baseurl + "/topic_collect/collect"
body_data = {
"accesstoken": token,
"topic_id":"625cc91ceb0fc111c4a0d584"
}
r = requests.post(url, json=body_data)
print("收藏主题:", r.status_code, r.json())
def test_uncollect_topic():
"""
取消收藏
:return:
"""
url = baseurl + "/topic_collect/de_collect"
body_data = {
"accesstoken": token,
"topic_id": "625cc91ceb0fc111c4a0d584"
}
r = requests.post(url, json=body_data)
print("取消主题:", r.status_code, r.json())
def test_reply_topic():
"""
评论话题
:return:
"""
url = baseurl + "/topic/625cc91ceb0fc111c4a0d584/replies"
body_data = {
"accesstoken": token,
"content": "helloworld"
}
r = requests.post(url, json=body_data)
print("新建评论:", r.status_code, r.json())
def test_up():
"""
点赞
:return:
"""
url = baseurl + "/reply/625cca2ceb0fc111c4a0d5e4/ups"
body_data = {
"accesstoken": token
}
r = requests.post(url, json=body_data)
print("为评论点赞:", r.status_code, r.json())
if __name__ == '__main__':
print("现在开始进行cnode社区主要接口流程测试:")
test_add_topic()
test_edit_topic()
test_collect_topic()
test_uncollect_topic()
test_reply_topic()
test_up()