将公共部分url放到公共,组装url并判断发送请求方式,最后返回响应结果
import os
import requests
from common.myConf import MyConf
from common.my_path import conf_dir
class MyRequests:
# 初始化方法
def __init__(self):
# 请求头
self.headers={"X-Lemonban-Media-Type":"lemonban.v2"}
# 读取配置文件中的接口url公共地址
self.base_url=MyConf(os.path.join(conf_dir,"conf.ini")).get("server","host")
'''
组装完成后,进行请求的发送,判断是用那种方式进行发送请求的,并返回请求处理结果
'''
def send_requests(self,method,api_url,data,token=None):
# 处理请求头
self.__deal_header(token)
# 处理请求url
url=self.__deal_url(api_url)
# 调用requests的方法发起一个请求,并得到响应结果
print(url)
if method.upper()=="GET":
resp=requests.request(method,url,params=data,headers=self.headers)
else:
resp=requests.request(method,url,json=data,headers=self.headers)
return resp
# 获取token
'''
需处理请求头,因为除登录接口,其他接口如果要发送请求,需先登录,在进行发送,这个时候可以通过鉴权的方式,通过获取登录接口响应结果中的token值,然后再将token值组装到请求头headers中,后续接口即可进行发送请求(如果存在token就将其组装到发送请求头中,不存在则忽略)
'''
def __deal_header(self,token=None):
if token:
self.headers["Authorization"]="Bearer {}".format(token)
# 将公共接口地址与每个请求的url进行组装
'''
接口:每个接口地址存在公共的部分如前面一部分为服务器地址,后面一部分为发送请求地址,可将公共部分放在.ini配置文件中,通过配置文件获取公共部分,发送请求前将公共部分和发送请求部分进行组装,后续公共部分发送改变时,直接修改配置文件中公共部分即可,无需再对每个用例的接口请求进行修改。
'''
def __deal_url(self,api_url):
url=self.base_url+api_url
return url
if __name__ == '__main__':
mr = MyRequests()
url = "member/register"
req_data = {
"mobile_phone": "18720100022",
"pwd": "123456789",
"reg_name": "py37小简"
}
method = "post"
resp = mr.send_requests(method,url,req_data)
print(resp.json())
# url地址
url = "member/login"
# 请求类型:post
# 请求体
req_data = {
"mobile_phone": "18720100022",
"pwd": "123456789"
}
method = "post"
resp = mr.send_requests(method,url, req_data)
print(resp.json())
# 提取出来,给到下一接口去作为请求
json_res = resp.json()
token = json_res["data"]["token_info"]["token"]
member_id = json_res["data"]["id"]
url = "member/recharge"
# 请求数据
req_data = {
"member_id": member_id,
"amount": 1000
}
method = "post"
resp = mr.send_requests(method,url, req_data,token=token)
print(resp.json())