Python接口测试- requests 发送 get 请求

get 请求我们选择 腾讯天气 接口。首先我们看文档如下:

这里就相当于是接口文档,从这里我们可以获取到:请求方法、url、请求参数

首先我们在 Postman 中尝试一下(Postman 很容易入手,可以用来辅助来学习):

通过 Postman ,我们能够正常访问数据。

接下来使用 requests 库:

import requests
from pprint import pprint

# url
url = 'https://wis.qq.com/weather/common?source=xw&weather_type=forecast_1h|forecast_24h|index|alarm|limit|tips'
# 构造数据,requests 全系列支持字典类型的数据
payload = { 
	# 参考文档中的参数部分,逐一构造
	'province': '四川',
	'city': '成都',
	'county': '武侯区'
}
# 发送 get 请求,返回结果是服务端的响应数据
r = requests.get(url, params=payload)
# 获取响应报文体
# 1.以文本方式获取报文主体
pprint(r.text)
# 2. 以字典格式获取报文主体(仅针对返回是 json 格式的数据)
pprint(r.json())
# 3. 以二进制方式获取报文主体(视频、图片等)
pprint(r.content)

其实上面的代码,发送请求就一句话:

r = requests.get(url, params=payload)

其他代码都是在构造数据,获取响应。

当然 get 请求本身参数都在 url 中,我们也可以将参数构造在 url 中:

# url,注意参数我们通过&和键值对的形式放在了 url 中
url = 'https://wis.qq.com/weather/common?source=xw&weather_type=forecast_1h|forecast_24h|index|alarm|limit|tips&province=四川&city=成都&county=武侯区'

# 发送 get 请求,返回结果是服务端的响应数据
r = requests.get(url)
# 这里的响应是 json 格式的数据,我们直接通过 json() 方法查看
pprint(r.json())

不管使用字典构造参数,亦或者是直接拼接在 url 中,最终都会被 requests 自动为我们转码为标准的 url 格式,我们可以通过 r.request.url查看请求中的实际 url 。

print(r.request.url)
## https://wis.qq.com/weather/common?...&county=%E6%AD%A6%E4%BE%AF%E5%8C%BA

关于响应对象中的其他属性,将在后面专门讲解。

关于header

一般我们是不需要专门处理请求的 header 信息,除非其中涉及到了认证的 token、或者 cookie 等数据需要同时传递给服务器。这得益于 requests 优秀的设计,很多常用的头部字段已由 requests 帮我们自动处理了。

requests 中关于 header 的处理,与参数很像,都是通过字典来构造。

比如,我这里传递用于标识请求数据类型的 content-type字段:

headers = {
	# 这里的头部字段不需要区分大小写
	'content-type': 'application/x-www-form-urlencoded;charset=UTF-8'
	}
r = requests.get(url, headers=headers)

获取到响应的数据,说明我们的请求发送成功啦,后面就应该是对结果的断言咯。不过先稳一下,我们先把其他的方法了解一下。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值