前言
- 运用框架:requests,pytest
封装requests和断言方法
1、新建py文件requests_,文件名称自定
2、封装分3个阶段,
封装控制台打印网络请求信息和返回信息
封装requests网络请求,已post请求为主
重新封装断言方法
improt json
from requests import Request
""" 1、封装控制台打印网络请求信息和返回信息 """
# 控制台带引网络请求信息
def print_req(preq):
print('=======================【请求信息】=======================')
print(f'【url】-{
preq.method}:{
preq.url}')
print(f'【headers】-{
preq.headers}')
print(f'【data】-{
preq.body}')
# 控制台打印网络返回结果
def print_resp(resp):
print('=======================【返回结果】=======================')
print(f'【status_code】-{
resp.status_code}')
print(resp.json()) # 不美化打印返回数据
ppd(resp.json()) # 美化打印字典格式数据
print('========================================================')
# 美化打印字典格式数据
def ppd(dic):
print(json.dumps(dic,indent=2,ensure_ascii=False))
""" 2、封装requests网络请求 """
# 发送网络请求,返回原始response对象
def pure_request(s,url,data='{}',headers={
'Content-type':'application/json'}):
req = Request('POST',url,data=data,headers=headers)
prep = req.prepare() # 准备url
print_req(prep) # 调用上面封装好的控制台打印方法,打印请求信息
# 发送网络请求,返回请求结果
resp = s.send(prep)
print_resp(resp) # 调用上面封装好的控制台打印方法,打印返回信息
return resp
# 发送网络请求,返回json对象
def request(s,url,data='{}',headers={
'Content-type':'application/json'}):
result = pure_request(s,url,json.dumps(data),headers)
return result.json()
""" 3.重新封装json格式断言方法 """
"""
d1-预期结果,d2-实际返回结果
递归d2字典是不是和d1模板字典所期望值
d1中 键开头是 !,那么 d1 != d2
d1中 键开头是 * ,那么表示这个key不应该存在
d1中 键开头是 ?,可选字段,有的话进行验证,没有的略过
d1中 键开头是 @ ,那么检查长度是否正确
d1中 键开头是 [] ,那么检查只是否在一个范围内,例如[1,2,3,4]
d1中 值是None, 只检查是否有这个键
d1中 值不是None, 检查两个值是否一模一样
"""
def iterdict_dic(d1,d2):
# 判断数据类型是否一样
if type(d1)