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. ...
随机推荐
- 计算GPS点之间的距离
latitude纬度 longtitude经度 // 求弧度 double getRadian(double d) { return d * PI / 180.0; //角度1? = π / 180 ...
- 对post提交数据Content-Type的理解
Content-Type是指http/https发送信息至服务器时的内容编码类型,contentType用于表明发送数据流的类型,服务器根据编码类型使用特定的解析方式,获取数据流中的数据. 在网络请求 ...
- leetcode 1110. 删点成林
题目描述: 给出二叉树的根节点 root,树上每个节点都有一个不同的值. 如果节点值在 to_delete 中出现,我们就把该节点从树上删去,最后得到一个森林(一些不相交的树构成的集合). 返回森林中 ...
- Windows下安装 Linux 下vim编辑器
Windows下安装vim编辑器 下载传送门 https://vim.en.softonic.com/download# 开始安装 这是下载后的可执行文件 双击(或单击)运行软件,选择同意继续进行安装 ...
- thinkPHP5如何使用rabbitmq
thinkPHP5如何使用rabbitmq? 安装好 tp5 的 rabbitmq 扩展后,在项目根目录文件添加文件 rabbitmq.php 引导启动 rabbitmq. <?php defi ...
- C/C++ 指针常量和常量指针
为了区分是指向常量的指针还是const指针(表示指针本身是常量) 一个简便方法:从由往左读,遇到p就替换为“p is a”,遇到*就替换为“point to”,其余不变. const int * p ...
- (一)pdf的数据类型
引自:https://blog.csdn.net/steve_cui/article/details/81912528 pdf的数据类型主要由8种 boolean(布尔型) :关键字为“ ...
- CentOS 6.x安装php 5.6和redis扩展的全过程
安装PHP 5.6 #yum clean all #yum update 整体升级一下yum包 #yum install -y epel-release #yum list installed | g ...
- JDK9对集合添加的优化
JDK9对集合添加的优化 JDK9的新特性: list接口,Set接口,Map接口:里边增加了一个静态的方法of,可以给集合一次性添加多个元素 static <E> List<E&g ...
- -Shell 教程 Bash 脚本 基础语法 MD
目录 目录 Shell 简介 Shell 脚本 Shell 环境 第一个shell脚本 Shell 变量 定义变量 使用变量 只读变量 删除变量 Shell 字符串 单引号 双引号 字符串基本操作 S ...