前边说了如何去抓取及过滤本地的接口,方便我们在接口测试中去运用,当然这个桩的目的当然不是在我们接口测试,而是在我们整个内部方便去运用,去mock数据,当我们目前在本地可以去抓包,比如在我们开发过程中,或者说我们脚本中run_case的时候就可以抓到其数据
这里更新下代码
from mitmproxy import http
class GetData(object):
def request(self,flow):
request_data = flow.request
self.request_url = request_data.url
request_pr = request_data.query
request_form = request_data.urlencoded_form
# print('url------------------>',self.request_url)
# print('pr--------------->',request_pr)
# print('form---------------->',request_form)
def response(self,flow):
# if 'imooc' in self.request_url:
response_data = flow.response
response_header = response_data.headers
content_type = response_header['Content-Type']
if 'image' in content_type:
print('这里返回的是图片')
elif 'json' in content_type:
print('content_type---------------->', content_type)
print('code------------>', response_data.status_code)
print('res_data-------------------->', response_data.text)
else:
print('格式非预期')
addons = [
GetData()
]
我们前边一起练习的代码运行结果
这样我们这样一个流程就串联了起来,串联通了可以看到,现在是需要的是运行时需要mock数据,但是mock数据怎么操作呢,如果说在我本地,在服务器的话至少我现在接到这个接口我该怎么去操作,这时就要和前边的操作有一点点类似了
使用get_value通过url获取到我们config配置文件中的mock数据,
from mitmproxy import http
from Utils.handle_json import get_value
import json
class GetData(object):
def request(self,flow):
request_data = flow.request
self.request_url = request_data.url
request_pr = request_data.query
request_form = request_data.urlencoded_form
# print('url------------------>',self.request_url)
# print('pr--------------->',request_pr)
# print('form---------------->',request_form)
def response(self,flow):
if 'imooc' in self.request_url:
response_data = flow.response
host = self.request_url.split('.com')
base_url = host[0]
url = host[1]
if '?' in host[0]:
url = url.split('?')
data = json.dumps(get_value(url))
print('-------------->data:',data)
response_data.set_text(data)
# response_header = response_data.headers
# content_type = response_header['Content-Type']
# print(content_type)
# if 'image' in content_type:
# print('这里返回的是图片')
# elif 'json' in content_type:
# print('content_type---------------->', content_type)
# print('code------------>', response_data.status_code)
# print('res_data-------------------->', response_data.text)
# elif 'text' in content_type:
# print('content_type---------------->', content_type)
# print('code------------>', response_data.status_code)
# print('res_data-------------------->', response_data.text)
# else:
# print('格式非预期')
addons = [
GetData()
]
这样就拿到了我们mock的数据
来源:CSDN
作者:Millet。
链接:https://blog.csdn.net/enemy_sprites/article/details/104058922