Mock Server之接口信息从DB获取
上一篇,写了Mock Server的基础实现与被测系统的对接
当我们mock的接口信息、返回值等时不时维护时,都要在代码中编辑,那体验就不太好了,如果这些可以直接在浏览器编辑就好了。
因此对后端部分做下调整,再加个前端,前端页面大致如下:

新增、修改接口:

接口返回值管理:

一、后端path参数化
对于path部分做下参数化:
@db_response_app.route('/<path:url_path>', methods=['GET', 'POST'])
def db_response(url_path):
check_data = CheckData(url_path,request.method)
return check_data.check_data_list()
对获取到的返回值做下检查及处理后返回:
from mysql_operate.mock_config_opt import MockConfigOperate
from data_manage.resp_param_replace import RespParamReplace class CheckData():
def __init__(self,url, method):
self.mock_config_operate = MockConfigOperate()
self.resp_param_replace = RespParamReplace(url, method)
self.data_list = self.mock_config_operate.get_resp(url, method) def check_data_list(self):
if len(self.data_list) == 1:
response_data = self.resp_param_replace.param_replace()
return response_data
elif len(self.data_list) > 1:
return '相同的路径和请求方法存在多条,请检查!'
else:
return 'not defined'
返回值从数据库获取:
from common.db_common import DBCommon
class MockConfigOperate():
def __init__(self):
self.dbCommon = DBCommon()
def get_resp(self, url_path, method):
resp_sql = "SELECT md.resparams from mock_detail md,mock_config mc WHERE mc.respid=md.id and " \
"mc.domain='{url_path}' and mc.methods='{method}';".format(method=method, url_path=url_path)
resp_list = self.dbCommon.query_list(resp_sql)
return resp_list
表设计:
mock_config:respid决定启用的resp

mock_detail:

获取到的返回值处理:
from mysql_operate.mock_config_opt import MockConfigOperate
from common.get_time import GetTime
from data_manage.update_param import UpdateParam
import re class RespParamReplace():
def __init__(self,url,method):
self.time_stamp = GetTime()
self.mock_config_operate = MockConfigOperate()
self.resp_list = self.mock_config_operate.get_resp(url, method)
self.update_param = UpdateParam() self.param_dict = {'@{param_uuid}': self.update_param.update_uuid(),
'@{param_time_stamp}': self.update_param.update_time_stamp(),
'@{param_id}':self.update_param.update_id()} def __get_param(self):
param_key = re.findall(r'@{.*?}', self.resp_list[0]['resparams'])
return param_key def param_replace(self):
resp_value = self.resp_list[0]['resparams']
param_list = self.__get_param()
if param_list:
for param in param_list:
if self.param_dict.has_key(param):
resp_value = re.sub(param,str(self.param_dict[param]),resp_value)
return resp_value
else:
return resp_value
Mock Server之接口信息从DB获取的更多相关文章
- 使用 http 请求方式获取 eureka server的服务信息
对于一些系统不能接入 eureka server,又需要访问接入eureka server 的服务. 方法一:直接调用服务的地址是一种实现方式,弊端就是地址是写死的,万一服务地址变更则访问不到. 方法 ...
- Mock Server 实现post方法的接口(三)
Mock Server 实现post方法的接口(三) 1.mock server实现的接口,当request中未设置"method"时,会自动将所有method试一次,所以一定要指 ...
- mock server 实现get方法的接口(二)
mock server 实现get方法的接口(二) 下面是实现查询品牌的接口demo: 1.当response数据量小的时候,可以直接使用json, mock会自动设置headers为applicat ...
- 利用eolinker实现api接口mock测试(mock server)
转载:http://blog.csdn.net/naicha_qin/article/details/78276172 前后端分离或者是进行单元测试的时候,必须要用mock api替换掉第三方调用或者 ...
- 获取项目中所有URL--获取swagger上展示的接口信息
有时我们需要接口的一些基本信息,比如接口请求路径,接口请求方式等,我们用这些信息来做判断,或者入库. 我在开发接口权限的时候就遇到了这个问题,之前写的接口很多,现在需要将这些接口信息存到数据库中, 用 ...
- Fiddler-009-AutoResponder 简单的 MOCK SERVER 应用实例
在我们日常的测试中经常需要测试特定的响应对应的客户端展示样式是否正确无误,实现测试方法一般有如下三种: 创建新的测试数据(工作量较大) 修改已有测试数据(例如修改对应的状态码,若是最终需要测试的按钮状 ...
- Python接口测试实战5(下) - RESTful、Web Service及Mock Server
如有任何学习问题,可以添加作者微信:lockingfree 课程目录 Python接口测试实战1(上)- 接口测试理论 Python接口测试实战1(下)- 接口测试工具的使用 Python接口测试实战 ...
- Mock Server实践
转载自 https://tech.meituan.com/mock-server-in-action.html 背景 在美团服务端测试中,被测服务通常依赖于一系列的外部模块,被测服务与外部模块间通过R ...
- [转]使用flask实现mock server
什么是mock server: http://www.testclass.net/interface/mock_server 使用flask 实现 mock server : http://www. ...
随机推荐
- sizeof 计算 struct 占字节数的方法总结
矛盾焦点: 1.结构体的内存对齐方式 字节对齐的目的: 1.提高CPU存储变量的速度 计算的核心点(默认对齐方式): 1.结构体内的每一个成员的起始地址跟结构体起始地址的偏移量要刚好是自己字节数的整数 ...
- 简单说说JavaScript的Generator 实现(ES6)
Generator 是 ES6 中新增的语法,和 Promise 一样,都可以用来异步编程 // 使用 * 表示这是一个 Generator 函数 // 内部可以通过 yield 暂停代码 // 通过 ...
- Pod Preset玩转K8S容器时区自动配置
缘由默认的情况,在K8S里启动一个容器,该容器的设置的时区是UTC0,但是对于很多客户而言,其主机环境并不在UTC0.例如中国客户在UTC8.如果不把容器的时区和主机主机设置为一致,则在查找日志等时候 ...
- YYCache 的整体架构类图

- vim查找
vim编辑器查找的时候,先 esc,然后 /要查找的内容,按下enter,查找下一个使用 n. 如果向向上查找使用 ?要查找的内容,按下enter,查找上一个使用n
- Vue项目(vuecli3.0搭建)集成高德地图实现路线轨迹绘制
先看最后实现的效果图 高德地图api文档 https://lbs.amap.com/api/javascript-api/summary 使用 1.在index.html里面引入高德地图js文件 2. ...
- FusionInsight大数据开发---Flume应用开发
Flume应用开发 要求: 了解Flume应用开发适用场景 掌握Flume应用开发 Flume应用场景Flume的核心是把数据从数据源收集过来,在送到目的地.为了保证输送一定成功,发送到目的地之前,会 ...
- flask异常处理:abort、errorhandler、app_errorhandler,封装全局异常处理
目录 1. abort() 1.1 使用方式一:传递一个错误码 1.2 使用方式二:传递一个json格式字符串 1.3 使用方式三:传递一个响应体 2. errorhandler 2.1 简单使用: ...
- 关于注解sql和动态sql的写法
注解写sql一般写在mapper层,如果sql语句复杂建议不要写注解sql 拼接容易出错 二动态sql的话要在 main 下面创建一个resource ——mapper—— Mapper.xml 再在 ...
- 上传文件大小与时间 Web.Config文件 httpRuntime 限制
httpRuntime <httpRuntime executionTimeout="90" maxRequestLength="40960" useF ...