mitmproxy接口测试关联

前边说了如何去抓取及过滤本地的接口,方便我们在接口测试中去运用,当然这个桩的目的当然不是在我们接口测试,而是在我们整个内部方便去运用,去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的数据

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值