全面熟练Requests库以及底层方法调用逻辑
请求
def get(url,params=none,**kwargs):
url: 必需
,表示要发送请求的 URL 地址。
params: 可选
,默认为 None,表示要作为查询参数发送的数据,通常是一个字典或类似字典的对象。
**kwargs:
表示接受任意数量的关键字参数,这些参数将被传递给底层的 HTTP 库,以便进行定制化的配置。
def post(url,data=None,json=None,**kwargs):
url: 必需
,表示要发送请求的 URL 地址。
data: 可选
,默认为 None,表示要作为表单数据发送的内容,通常是一个字典或类似字典的对象。
json: 可选
,默认为 None,表示要作为 JSON 数据发送的内容,通常是一个字典或类似字典的对象。
**kwargs:
表示接受任意数量的关键字参数,这些参数将被传递给底层的 HTTP 库,以便进行定制化的配置。
postman四种传参方式
def put(url,data=none,**kwargs):
url:
这是你要发送PUT请求的目标URL。
data=None:
这是可选的参数,用于传递要发送的数据。默认值为None,表示不发送任何数据。具体传递的数据内容取决于你要发送的API和数据格式。
**kwargs:
这是一个可变数量的关键字参数,允许你传递任意数量的其他参数给函数。这些参数通常是用于配置HTTP请求的其他选项,比如请求头、超时时间等。具体参数和其含义可以根据具体的HTTP库而定。
def delete(url,**kwargs):
url:
这是你要发送 DELETE 请求的目标 URL。
**kwargs:
这是一个可变数量的关键字参数,允许你传递任意数量的其他参数给函数。这些参数通常用于配置 HTTP 请求的其他选项,比如请求头、超时时间等。具体参数和其含义可以根据你使用的 HTTP 库而定。
requests响应部分
res.text 返回的就是字符串形式的响应结果
res.json() 返回字典形式的结果
res.content() 返回字节类型的结果
res.status_code 返回状态码
res.reason 返回状态信息
res.cookie 返回cookie信息
res.encoding 返回编码格式
res.headers 返回相应头
res.requests.xxx 得到请求数据
调用的底层方法
requests.request(“get”,url,params=params,**kwargs)
requests.request()调用session.request方法
session.request(method=method, url=url, **kwargs)
def request(
self,
method,
url,
params=None,
data=None,
headers=None,
cookies=None,
files=None,
auth=None,
timeout=None,
allow_redirects=True,
proxies=None,
hooks=None,
stream=None,
verify=None,
cert=None,
json=None,
):
pytest之接口项目实战
import requests
class TestApi:
#获取鉴权码的接口
def test_get_token(self):
urls = "https://api.weixin.qq.com/cgi-bin/token"
datas = {
"grant_type": "client_credential",
"appid": "wxid_w41rhkp589b612",
"secret": "Fenduo2024"
}
res = requests.get(url=urls, params=datas)
print(res.json())
#获取测试查询的接口
def test_select_flag(self):
urls= "https://api.weixin.qq.com/cgi-bin/get_current_selfmenu_info"
datas= {
"access_token": "???"
}
res= requests.get(url=urls, params=datas)
print(res.json())
if __name__ == '__main__':
TestApi().test_get_token()
接口关联的三个层级:
通过类变量保存中问变量实现接口关联
import jsonpath
import requests
class TestApi:
#创建一个类变量
access_token=" "
#获取鉴权码的接口
def test_get_token(self):
urls = "https://api.weixin.qq.com/cgi-bin/token"
datas = {
"grant_type": "client_credential",
"appid": "wx8a9de038e93f77ab",
"secret": "8326fc915928dee3165720c910effb86"
}
res = requests.get(url=urls, params=datas)
# 从响应结果中解析出 JSON 数据,并使用 jsonpath 提取出 access_token 的值
# jsonpath.jsonpath() 返回一个列表,包含所有匹配到的结果,这里假设 access_token 只有一个
lis=jsonpath.jsonpath(res.json(), "$.access_token")
# TestApi.access_token=res.json()["access_token"]
# print(TestApi.access_token)
# 打印提取到的 access_token 的值,lis[0] 是因为 jsonpath 返回的是一个列表,我们需要取第一个元素
print(lis[0])
#获取测试查询的接口
def test_select_flag(self):
urls= "https://api.weixin.qq.com/cgi-bin/get_current_selfmenu_info"
datas= {
"access_token": TestApi.access_token
}
res= requests.get(url=urls, params=datas)
print(res.json())
if __name__ == '__main__':
TestApi().test_get_token()
TestApi().test_select_flag()
通过单的文件保存中间变量实现接口关联
极限封装成零代码的方式实现接口关联
接口关联的方式
(1)正则提取实现接口关联
re.seach()
诵过正则匹配一个值,通过下标1取值,没有匹到版回None
re.findall
(通过正则匹配多个值,返回List,通过下标取值,没有匹配到返回None
(2)JsonPath提取实现接口关联
jsonpath.jsonpath()返回一个列表,通过下标取值,没有找到返回None.
#获取鉴权码的接口
def test_get_token(self):
urls = "https://api.weixin.qq.com/cgi-bin/token"
datas = {
"grant_type": "client_credential",
"appid": "wx8a9de038e93f77ab",
"secret": "8326fc915928dee3165720c910effb86"
}
res = requests.get(url=urls, params=datas)
print(res.json())
import jsonpath
import requests
class TestApi:
#创建一个类变量
access_token=" "
#获取鉴权码的接口
def test_get_token(self):
urls = "https://api.weixin.qq.com/cgi-bin/token"
datas = {
"grant_type": "client_credential",
"appid": "wx8a9de038e93f77ab",
"secret": "8326fc915928dee3165720c910effb86"
}
res = requests.get(url=urls, params=datas)
# 从响应结果中解析出 JSON 数据,并使用 jsonpath 提取出 access_token 的值
# jsonpath.jsonpath() 返回一个列表,包含所有匹配到的结果,这里假设 access_token 只有一个
lis=jsonpath.jsonpath(res.json(), "$.access_token")
# TestApi.access_token=res.json()["access_token"]
# print(TestApi.access_token)
# 打印提取到的 access_token 的值,lis[0] 是因为 jsonpath 返回的是一个列表,我们需要取第一个元素
print(lis[0])
#获取测试查询的接口
# def test_select_flag(self):
# urls= "https://api.weixin.qq.com/cgi-bin/get_current_selfmenu_info"
# datas= {
# "access_token": "???"
# }
# res= requests.get(url=urls, params=datas)
# print(res.json())
if __name__ == '__main__':
TestApi().test_get_token()