摘要
Requests库是Python语言的杰作,它基于urllib3模块,采用Apache2许可证。它的使用简单,功能强大,让你的接口测试更加高效。
正文
『居善地』接口测试 — 3、Requests库详细介绍
文件目录
- 1、Requests库
- 2、Requests库文本文档
- 3、Requests库安裝
- 4、Requests库的应用
- (1)应用流程
- (2)实例训练
- 5、填补:Json数据信息和Python目标相互转换
1、Requests库
Requests库是用Python语言表达撰写,根据urllib3控制模块,选用Apache2 Licensed开源协议的 HTTP 库。
尽管Python的标准库中urllib3控制模块早已包括了平时大家应用的大部分作用,可是它的 API应用起來令人觉得不太友善。而Requests库应用的是urllib3,因而承继了它的全部特点,因此 Requests库比urllib3应用更为便捷,能够 节省大家很多的工作中,彻底达到 HTTP 检测要求。
Requests库适用HTTP 联接维持和数据库连接池,适用应用cookie 维持对话,适用上传文件,适用全自动明确回应內容的编号,适用现代化的URL 和POST 数据信息自动编号。当代、现代化、个性化。
Requests库自称为 “HTTP for Humans”(让HTTP服务项目于人们),表明应用更简约便捷。
Requests库是以 PEP 20 的人生箴言为管理中心开发设计的
- Beautiful is better than ugly.(漂亮好于丑恶)
- Explicit is better than implicit.(直接好于委婉)
- Simple is better than complex.(简易好于繁杂)
- Complex is better than complicated.(繁杂好于繁杂)
- Readability counts.(易读性很重要)
针对 Requests 全部的奉献都应铭记这种关键的规则。
简单点来说:Requests库等同于Python中的“电脑浏览器”,能够 根据它开展互联网要求、获得网页页面数据信息,功能齐全并且尤其功能强大。
表明PEP20:
PEP20是撰写python
程序流程的具体指导规则,在python shell
中键入import this
就能见到是撰写python
程序流程的具体指导规则,在python shell
中键入import this
就能见到,內容以下:
TIM Peters的python之禅
The Zen of Python, by Tim Peters
唯美胜于丑恶。
Beautiful is better than ugly.
确立胜于含蓄。
Explicit is better than implicit.
简易胜于繁杂。
Simple is better than complex.
繁杂胜于晦涩难懂。
Complex is better than complicated.
平扁胜于嵌入。
Flat is better than nested.
留白艺术胜于紧凑型。
Sparse is better than dense.
易读性很重要。
Readability counts.
充分必要条件也并不可以独特到能够 违反这种标准。
Special cases aren't special enough to break the rules.
尽管应用性胜于单纯性。
Although practicality beats purity.
不正确不可被静静地忽视。
Errors should never pass silently.
除非是你确立地忽略。
Unless explicitly silenced.
应对模棱两可,不必试着去猜想。
In the face of ambiguity, refuse the temptation to guess.
应当有一种,最好仅有一种,显著的处理方法。
There should be one-- and preferably only one --obvious way to do it.
一开始那类方法并不是不言而喻,除非是你是python鼻祖。
Although that way may not be obvious at first unless you're Dutch.
搞好过不做。
Now is better than never.
不加思索就动手能力还比不上不做。
Although never is often better than *right* now.
假如完成难以表述,那么就并不是个好构思。
If the implementation is hard to explain, it's a bad idea.
假如完成便于表述,则可能是个好构思。
If the implementation is easy to explain, it may be a good idea.
类名是个绝佳的想法,我们要多多的运用它。
Namespaces are one honking great idea -- let's do more of those!
2、Requests库文本文档
- 官方网文本文档:https://requests.readthedocs.io/en/master/
- 汉语文本文档:https://requests.readthedocs.io/zh_CN/latest/
- GitHub开源系统详细地址:https://github.com/psf/requests
3、Requests库安裝
安裝Requests库必要条件,必须安裝python自然环境,随后在cmdcmd中键入python -m pip install requests(强烈推荐)
或是pip install requests
就可以。
如下图:
实行pip list
查询Requests库是不是安裝取得成功,和所安裝的版本号(默认设置安裝最大版本号。)
C:Users\ailin-L>pip list
Package Version
------- --------
certifi 2020.12.5
chardet 4.0.0
idna 2.10
pip 19.2.3
requests 2.25.1
selenium 3.141.0
setuptools 41.2.0
ur11ib3 1.25.9
4、Requests库的应用
(1)应用流程
简易介绍一下Requests库流程。
#1.导进requests库
import requests
#2.提前准备插口三要素
# 2.1 确立要求详细地址
url = "http://127.0.0.1:8000/api/departments/"
# 2.2 确立要求主要参数
# 2.3 推送要求 要求方法
response = requests.get(url=url)
# 查询传参
print(response)
# 举例说明:
# 1.导进requests库
import requests
# 2.应用requests库
# 推送要求
response = requests.get('https://api.github.com/events')
# 查询結果
print(response.status_code)
print(response.headers['content-type'])
print(response.encoding)
print(response.json())
(2)实例训练
"""
1.个人目标
务必把握requests库的基本上应用
2.操作流程
# 1.导进requests库
# 2.确立要求详细地址
# 3.确立要求主要参数
# 4.推送要求
3.要求
应用requests库来要求学员智能管理系统一查看全部学校插口
4.汇总
传参的获得
response.text # 获得传参文字(将传参以文档格式表明)
response.json() # 获得json文件格式的传参,针对传参种类为json文件格式较为友善
response.status_code # 获得状态码---HTTP协议书回应状态码
response.headers # 获得回应头
response.content # 获得回应源代码(多用以网络爬虫)
5.json和python转换
json.dumps(必须变换的python目标,indent=2,ensure_ascii=False)
indent 表明恢复出厂设置輸出时缩近
ensure_ascii=False 表明对非ascii标识符不做转换
"""
# 1.导进requests库
import requests
import json
# 2.确立要求详细地址
url = "http://127.0.0.1:8000/api/departments/"
# 3.确立要求主要参数
# 沒有主要参数无需写
# 4.推送要求
response = requests.get(url=url)
# print(response)
# 結果:<Response [200]>
# 5.获得传参內容
res = response.json() # 会得到一个词典文件格式的目标
print(type(res)) # <class 'dict'>
# 6.python词典变换为json字符串数组
# 应用json库完成
# 将python目标变换为json字符串数组
result = json.dumps(res, indent=2, ensure_ascii=False)
print(type(result)) # 字符串类型<class 'str'>
print(result)
# json.loads() # 将json字符串数组变换为python目标
"""
結果:(简单,有17个,只展现2个,看一下文件格式就可以)
{
"count": 17,
"next": null,
"previous": null,
"results": [
{
"dep_id": "T02",
"dep_name": "Java_2学校",
"master_name": "Java-Master",
"slogan": "java"
},
{
"dep_id": "T03",
"dep_name": "Java_3学校",
"master_name": "Java-Master",
"slogan": "java"
}
}
"""
5、填补:Json数据信息和Python目标相互转换
Python3 中能够 应用 Json控制模块来对 JSON 数据信息开展编码解码,它关键给予了四个方式 : dumps
、dump
、loads
、load
。
(1)dump
方式 和dumps
方式 表明:
dump
方式 和dumps
方式 对Python
目标开展实例化,将一个Python
目标开展JSON
文件格式的编号。
json.dumps(obj, *,
skipkeys=False,
ensure_ascii=True,
check_circular=True,
allow_nan=True,
cls=None,
indent=None,
separators=None,
default=None,
sort_keys=False,
**kw)
表明dumps
方式 中常见的好多个主要参数:
obj
:表明是要实例化的目标。ensure_ascii
:初始值为True
,用于操纵转化成的JSON字符串数组的编号,能将全部传到的非ASCII标识符转义輸出。假如ensure_ascii
为False
,维持原来编号,则这种标识符将按原状輸出。indent
:能够 用于操纵JSON字符串数组的自动换行和缩近实际效果,初始值为None
。
假如indent
是非负整数或字符串数组,那麼JSON二维数组原素和目标组员将应用该缩近等级开展键入;indent
为0、负值或“”
仅插进换行符;indent
应用整数缩近好几个空格符;
假如indent
是一个字符串数组(比如“\t”),则该字符串数组用以缩近每一个等级。sort_keys
:初始值为False
,假如sort_keys
为True
,则词典的輸出将功能键值排列。
别的主要参数看源代码就可以,源代码中对dumps
方式 中的每一个主要参数都是有详尽的表明。
(2)load
方式 和loads
方式 表明:
load
方式 和loads
方式 对Python
目标开展反序列化方式 ,将JSON
文件格式数据信息编解码为Python
目标。
json.loads(s, *,
encoding=None,
cls=None,
object_hook=None,
parse_float=None,
parse_int=None,
parse_constant=None,
object_pairs_hook=None,
**kw):
表明loads
方式 中常见的好多个主要参数:
s
:将s(包括JSON文本文档的str
,bytes
或bytearray
案例)反序列化为Python目标。encoding
:特定一个编号的文件格式。
别的主要参数看源代码就可以,源代码中对loads
方式 中的每一个主要参数都是有详尽的表明。
留意:假如开展反序列化(编解码)的数据信息并不是一个合理的
JSON
文本文档,可能引起JSONDecodeError
出现异常。
(3)Python目标与 Json数据信息数据转换:
Python目标转Json数据信息:
Python | JSON |
---|---|
dict | object |
list, tuple | array |
str | string |
int, float, int-&float-derived emuns | number |
True | true |
False | false |
None | null |
Json数据信息转Python目标:
JSON | Python |
---|---|
object | dict |
array | list |
string | str |
number (int) | int |
number (real) | float |
true | True |
false | False |
null | None |
关注不迷路
扫码下方二维码,关注宇凡盒子公众号,免费获取最新技术内幕!
评论0