各位大神,能否指点一下,python 接口自动化的问题,非常感谢,问题如下:
class BaseApi(object):
# log = logger()
def post_request(self, url, data, header, file=None):
res = None
if file != None:
res = requests.post(url=url, data=data, headers=header, verify=False)
else:
res = requests.post(url=url, data=data, headers=header, files=file, verify=False)
return res
def send_request(self, method: object, url: object, header: object, data: object = None, file: object = None) -> object:
url = api_root_url_prd + url
try:
if method == 'post' or method == 'POST' or method == 'Post':
res = self.post_request(url, data, header, file=None)
elif method == 'get' or method == 'GET' or method == 'Get':
res = self.get_request(url, header, data)
else:
return "request传参错误"
return res
except Exception as e:
logger.error("请求方法报错{}".format(e))
class Alarm(BaseApi):
def post_add_alarm(self, headers, data):
"""
添加报警配置
:param headers:
:param data:
:return: 自定义关键字返回结果result
"""
response = self.send_request("POST", "/alarmRule/addRule", headers, data)
json_result = response.json()
status_code = response.status_code
print("json_result = " + json_result)
print("status_code = " + status_code)
问题 1:在上面的代码中我写了这句话 json_result = response.json() 和 status_code = response.status_code, 但是实际中我写代码的时候,self.send_request() 返回值 response 是调用不到.json() 和.status_code 这两个属性的,也就是说我写 response.的时候,是自动补全方法属性列表中是没有 json 和 status_code 这两个属性的,如下图:
在网上查了一下,说是没有用 super 这个超类方法,是调用不到父类中的私有属性的,但是我用了 super 子类还是没能调用到 json 和 status_code,这是怎么回事?
问题 2:虽然 response 点不出我要的属性,那我现在强行写了这两句话 json_result = response.json() 和 status_code = response.status_code,然后写了两行打印语句,看看输出的结果是不是正确,结果出乎意料的是,虽然 response 的属性列表中显示不出.json() 和.status_code,但是我的子类 Alarm 中的 post_add_alarm 方法,确实实际调用到了父类 BaseApi 中的私有属性.json() 和.status_code,打印结果 print("json_result = " + json_result) 和 print("status_code = " + status_code) 是竟然是正确的,返回了 status_code = 200 和 json_result 的正确数据,这是为什么呀???
附上我的代码目录结构,如下图:
请各位大神,指点一下,小弟谢谢拉。