mitmproxy接口测试关联

前边说了如何去抓取及过滤本地的接口,方便我们在接口测试中去运用,当然这个桩的目的当然不是在我们接口测试,而是在我们整个内部方便去运用,去mock数据,当我们目前在本地可以去抓包,比如在我们开发过程中,或者说我们脚本中run_case的时候就可以抓到其数据

mitmproxy接口测试关联_第1张图片
这里更新下代码

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()
]

mitmproxy接口测试关联_第2张图片

我们前边一起练习的代码运行结果

mitmproxy接口测试关联_第3张图片
这样我们这样一个流程就串联了起来,串联通了可以看到,现在是需要的是运行时需要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的数据

你可能感兴趣的:(接口自动化测试)