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. ...
随机推荐
- Rattle
Rattle使用RGtk2 包提供的Gnome图形用户界面,可以在WINDOWS,MAC OS/X,Linux等多个系统中使用. Rattle基于大量的R包:RGtk2, pmml, colorspa ...
- python 散点图上给每个点打标签方便看到数据
import numpy as np import matplotlib.pyplot as plt x=[2.3,4.5,3,7,6.5,4,5.3] y=[5,4,7,5,5.3,5.5,6.2] ...
- python 基础 ---- 文件读写
文件是一种存储在存储存储媒介上的信息或数据 常用的文件类型 文件 的打开关闭 close() 关闭文件 文件的打开路径 绝对路径 : 文件在操作系统中标准的存放路径 相对路径: 与目前引用文件的相对位 ...
- spring cloud 服务治理 - Eureka
前言 在分布式系统领域有个著名的CAP定理: C——数据一致性: A——服务可用性: P——服务对网络分区故障的容错性. 这三个特性在任何分布式系统中不能同时满足,最多同时满足两个. Zookeepe ...
- os-enviroment
pip3 install PyUserInput ping 是不带协议的
- fiddle4 弱网测试
下载:https://www.telerik.com/download/fiddler/fiddler4 参考:https://blog.csdn.net/qq_28905427/article/de ...
- 金九银十跳槽高峰,面试必备之 Redis + MongoDB 常问80道面试题
前言 有着“金九银十”之称的招聘旺季已经开启,跳槽高峰期也如约而至. 本文为主要是 Redis + MongoDB 知识点的攻略,希望能帮助到大家. 内容较多,大家准备好耐心和瓜子矿泉水. Redis ...
- Go在windows下执行命令行指令
需要在Go写的服务里面调用命令行或者批处理,并根据返回的结果做处理. 在网上搜索了一翻,验证成功,现记录如下: cmd := exec.Command("cmd") // cmd ...
- k8s创建pod和service的过程
一.概念介绍 更详细的参见:https://www.kubernetes.org.cn/5335.html 1.K8s K8s 是一种用于在一组主机上运行和协同容器化应用程序的系统,提供应用部署.规划 ...
- mysql 事务的实现原理
开篇 相信大家都用过事务以及了解他的特点,如原子性(Atomicity),一致性(Consistency),隔离型(Isolation)以及持久性(Durability)等.今天想跟大家一起研究下事务 ...