python+pytest接口自动化(4)-requests发送get请求
2022-03-07 20:23
741 查看
python中用于请求http接口的有自带的
urllib和第三方库
requests,但 urllib 写法稍微有点繁琐,所以在进行接口自动化测试过程中,一般使用更为简洁且功能强大的 requests 库。下面我们使用 requests 库发送get请求。
requests库
简介
requests 库中提供对用的方法用于常用的HTTP请求,对应如下:
requests.get() # 用于GET请求 requests.post() # 用于POST请求 requests.put() # 用于PUT请求 requests.delete() # 用于DELETE请求
当然还有更多的方法,这里只列举常用的。
安装
安装命令:
pip install requests
发送get请求
get请求参数格式说明
requests 中的 get 方法源码如下:
def get(url, params=None, **kwargs): r"""Sends a GET request. :param url: URL for the new :class:`Request` object. :param params: (optional) Dictionary, list of tuples or bytes to send in the query string for the :class:`Request`. :param \*\*kwargs: Optional arguments that ``request`` takes. :return: :class:`Response <Response>` object :rtype: requests.Response """ kwargs.setdefault('allow_redirects', True) return request('get', url, params=params, **kwargs)
参数说明:
- url,即接口地址
- params,接口参数,可选(即可填可不填)
- **kwargs,可以添加其他请求参数,如设置请求头headers、超时时间timeout、cookies等
不带参数请求
import requests res = requests.get(url="https://www.cnblogs.com/lfr0123/") # 请求得到的res是一个Response对象,如果想要看到返回的文本内容,需要使用.text print(res.text)
带参数请求
import requests url = "http://www.baidu.com/s" params = {"wd": "给你一页白纸-博客园", "ie": "utf-8"} res = requests.get(url=url, params=params) print(res.text)
加入请求头headers
有些接口限制只能被浏览器访问,这时按照上面的代码去请求就会被禁止,我们可以在代码中加入 headers 参数伪装成浏览器进行接口请求,示例如下:
import requests url = "http://www.baidu.com/s" params = {"wd": "给你一页白纸-博客园", "ie": "utf-8"} # User-Agent的值为浏览器类型 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36" } res = requests.get(url=url, params=params, headers=headers) print(res.text)
部分结果如下:
这里的响应体其实就是在百度中搜索
给你一页白纸-博客园的结果页面。
除此之外,还可以加入timeout、cookies等,写法如下:
# timeout只限制请求的超时时间,单位为s,若超时则报错 res = requests.get(url=url, params=params, headers=headers, timeout=20, cookies=cookies)
响应内容
发送请求后会获取到接口响应的内容,如上面示例中res.text,其他响应内容获取方式如下:
res.status_code # 响应状态码 res.headers # 响应头 res.encoding # 响应体编码格式 res.text # 响应体,字符串形式的文本信息 res.content # 响应体,二进制形式的文本信息,会自动解码 res.cookies # 响应的cookie res.json() # 响应体格式为json,则需要通过json()进行解码
这里需要注意,
res.text与
res.content的使用,具体使用哪种方式获取响应体内容,需要根据编码方式进行选择,最笨的方法就是一种不行换另一种试试。
示例如下:
import requests url = "http://www.baidu.com/s" params = {"wd": "给你一页白纸-博客园", "ie": "utf-8"} # User-Agent的值为浏览器类型 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36" } res = requests.get(url=url, params=params, headers=headers) print(res.text) print(res.status_code) print(res.headers) print(res.encoding) print(res.cookies)
结果如下:
结果中由上而下依次对应代码中print的响应内容。
相关文章推荐
- python+pytest接口自动化(5)-requests发送post请求
- python接口自动化发送get请求 详解(一)
- python接口自动化1-发送get请求
- python接口自动化(六)--发送get请求接口(详解)
- 【转】python发送GET或POST请求以便干一些趣事
- python 使用urllib2发送get请求和post请求
- Python之使用request模块发送POST和GET请求
- python发送http请求之requests模块
- 大概看了一天python request源码。写下python requests库发送 get,post请求大概过程。
- python发送GET或POST请求
- python学习笔记:使用requests库发送get与post请求
- python - requests 发送带文件请求
- python发送GET或POST请求以便干一些趣事
- python 使用requests 实现 post 和get请求
- Python发送HTTP GET请求
- python中使用requests 模拟浏览器发送请求数据
- python的requests类库(一)requests库和urllib包对比:一个简单get请求
- python用httplib模块发送get和post请求
- Python使用requests发送POST请求实例代码
- python 发送 get post请求