pythonflaskmock数据_Flask实现简单Mock Server

Mock Server充当的角色:

Mock server在实际项目中的意义就相当于数据库。将我想要的数据返回给我就行,我并不关心你怎么逻辑处理的。

一般的应用程序请求方式是GET和POST。

Flask自带的request使用:request.url获取当前的请求url全路径地址,request.method获取当前的请求方式。

Flask处理get请求时:

(1)因为get方式存在带”?”的参数方式,所以可以使用urlparse模块进行解析。

url parse是将url拆分成6部分,并返回元组。具体实例可以参见:Python2.7 urlparse学习

将带”?”的方式分别将key-value对应关系取出来,这样就可以知道每一个请求的key-value。

(2)不同的公司定义的接口标准不同,不同的get方式key-value对应关系要自己去梳理和找出相同及不同点,方便后期自己不管是做接口还是客户端测试验证时可以:

根据url就可以取出对应的key-value,进行自动化校验。

Flask处理POST请求时:

post方式的数据一般是放在body中的,有时header中会携带一些用户信息:

使用request.get_data() 可以获取到请求中的body内容,使用request.headers获取到header中的用户信息,然后可以根据规律同样将key-value对应关系取出,进行相应的测试等。

Flask正则表达式:

Flask正则表达式要想使用需要导入BaseConverter:

from werkzeug.routing import BaseConverter

定义一个类:

Class RegexConverter(BaseConverter):

def __init__(self,url_map,*items):

super(RegexConverter,self).__init__(url_map)

self.regex=items[0]

然后app.url_map.converters[‘regex’]=RegexConverter

通过定义:

@app.route(‘/’,methods=[‘GET’,’POST’]) #匹配所有的url地址

def allurl(ceshi):

myreqUrl=request.url

print myreqUrl

Return ‘

所有url返回这个结果!

这样就可以匹配所有的url并返回相同的结果。

Regex正则表达式相关学习:

匹配任意字符:[\w\W]*

匹配任意包含jingxuan的正则 \\w*jingxuan\\w*

匹配最后以json结尾的正则 .json$

匹配任意符合数字的正则 -?\d+

匹配任意符合字母的正则 -?[a-zA-Z]+

只匹配一个数字 \\d或者[0-9]

匹配版本号 (-?\d+)(\.\d+)?(\.\d+)?(\.\d+)?(\.\d+)?

匹配类型json结尾或者html结尾 .json$|.html$

匹配url ^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$

Flask Mock Server可以做的:

使用flask的正则表达式可以根据请求的url及抓到的请求参数:

1.自动验证参数数量及合法性(所谓的接口自动化做的事情)。

2.自动返回固定的数据,或者根据需要进行相应的修改。

3.尽可能的模拟接口在真实环境下的状态,进行最大程度的模拟“客户端状态”。

目前所做的事情已经基本可以实现了部分客户端及接口校验,当然还有很多不足。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/260018.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在Application_Error事件中获取当前的Action和Control

ASP.NET MVC程序处理异常时,方法有很多,网上也有列举了6种,下面是使用全局处理在Global.asax文件的Application_Error事件中实现。既然是ASP.NET MVC,我需要捕捉到Controller和Action名称。怎样实现可以参考下面代码: 程序运行结果…

android 真机 sqlite3,在android真机上使用sqlite3

#zijun#2013.10.29#QQ:223663737在android真机上使用sqlite3前期准备:1:保证手机已经ROOT操作步骤:1 : 打开CMD2 : 进入android linuxadb shell3 :切换到root权限su - root4 : 修改system目录为可读写权限mount -oremount,rw -t yaffs2 /dev/block/mtdblock3 /system5 :拷贝文件…

【ORACLE技术嘉年华PPT】MySQL压力测试经验

这是2013.11.18在第三届ORACLE技术嘉年华上的主题演讲PPT。点击这里:本地下载PPT。--------------------------------------分割线--------------------------------------知数堂 (http://zhishuedu.com)培训是由资深MySQL专家叶金荣、吴炳锡…

EditText 空指针问题

今天在Android中碰到了这样一个问题,其实应该很少人会碰到,因为只有像我这种奇葩才会犯这种错误。 但既然解决了,我就想在这里跟大家分享一下,毕竟它困扰了我一个白天啊。。。不多说了,看下面。。。 其实问题很简单&am…

ios跨线程通知_iOS多线程开发(三)---Run Loop(一)

Run LoopRun Loop就是一个事件处理的循环,用来不停的调动工作以及处理输入事件。使用Run Loop的目的就是节省CPU效率,线程在有工作的时候忙于工作,而没工作的时候处于休眠状态。一,Run Loop剖析Structure of a Run Loop and its s…

android播放flv,Android:从url播放flv视频流

我目前有一个应用程序,它可以记录视频并将其上传到我的服务器。在上传视频之后,应用程序会获得一个响应,该响应包含指向该文件的flv流的URL。Android:从url播放flv视频流当我尝试在android默认视频播放器(视频)中打开流时什么也没…

1.关于浏览器

一、认识主流浏览器 Chrome谷歌浏览器Safari苹果浏览器Firefox火狐浏览器Opera欧朋浏览器 二、浏览器内核是什么? 三、五大浏览器,四大内核 四、前端做网页开发用什么浏览器? Chrome谷歌浏览器。

About me [my way]

就要除夕了。假日的到来,心情瞬间就闲适了下来。早早上了床,看看电脑还有30%的电,想到一些事情,顺带纪录一下吧。 今年坚持上班到了除夕的前一天,爸妈来工作的城市陪我过年了。感谢他们。前几天就已经看帖子有说仍在上…

明天要中秋节了,先来到简单“类”的题目

2-1 Point类的定义 Time Limit: 1000MS Memory limit: 65536K 题目描述 通过本题目的练习可以掌握类与对象的定义; 设计一个点类Time,它具有私有数据成员x(横坐标)、y(纵坐标);公有成员函数:SetPoint(int,int)用于设置点对象的值&…

实时数据交换平台 - BottledWater-pg with confluent

标签 PostgreSQL , Bottled Water , Kafka , Confluent , IoT 背景 想必大家都在图书馆借过书,小时候有好看的书也会在小伙伴之间传阅。 借书和数据泵有点类似,一份数据通过数据泵实时的分享给订阅者。 例如在IoT的场景中,有流式分析的需求&a…

科技鸿蒙系统一千章,第一千六百零七章 鸿蒙紫气,成圣之机 (上)

文学迷 > 玄幻魔法 > 天命神相 > 第一千六百零七章 鸿蒙紫气,成圣之机 (上)第一千六百零七章 鸿蒙紫气,成圣之机功德金身只要达到了八十一重天,大圆满的境界,实力堪混元大罗级别的圣人,这听起来确实是一件吊炸…

js reduce实现中间件_js数组高阶方法reduce经典用法代码分享

以下是个人在工作中收藏总结的一些关于javascript数组方法reduce的相关代码片段,后续遇到其他使用这个函数的场景,将会陆续添加,这里作为备忘。javascript数组那么多方法,为什么我要单挑reduce方法,一个原因是我对这个…

struts2的s:iterator 标签 详解

struts2的s:iterator 可以遍历 数据栈里面的任何数组,集合等等 以下几个简单的demo:s:iterator 标签有3个属性: value:被迭代的集合 id :指定集合里面的元素的id status 迭代元素的索引1:jsp…

Protocol Buffers的应用

1. Protocol Buffers的介绍 Protocol buffers are Google’s language-neutral, platform-neutral, extensible mechanism for serializing structured data – think XML, but smaller, faster, and simpler. You define how you want your data to be structured once, then …

编程提高:一天一道编程题

1.文本操作 逆转字符串——输入一个字符串,将其逆转并输出。 拉丁猪文字游戏——这是一个英语语言游戏。基本规则是将一个英语单词的第一个辅音音素的字母移动到词尾并且加上后缀-ay(譬如“banana”会变成“anana-bay”)。可以在维基百科上了…

android自验签名证书,没有以前的互联网连接,无法验证Android自签名证书

使用SSL基础架构:我们有一个有效的客户端/服务器设置,其中Android版本4.2和4.4的手机充当客户端,必须通过其自签名SSL证书验证服务器.问题:只要设备在尝试连接之前至少有一次互联网访问权限,服务器证书验证就会起作用.但是,如果执行恢复出厂设置且设备直…

asp.net缓存(二)

ASP.NET页面局部缓存 有时缓存整个页面是不现实的,因为页的某些部分可能在每次请求时都需要变化。在这些情况下,只能缓存页的一部分。顾名思义,页面部分缓存是将页面部分内容保存在内存中以便响应用户请求,而页面其他部分内容则为…

学习C# - Hello,World!

第一天学C#,开始学着写一些学习笔记,看了一下传智播客的视频,按照传智播客的教学顺序,开始学习。 class Program{static void Main(string[] args){Console.WriteLine("Hello World!");//自动添加回车换行Console.Write("Hell…

android获取button宽度,android – 如何获得Button的高度和宽度

我创建了一系列按钮.现在我想找到按钮的高度和宽度,为此我使用了getWidth()和getHeight().但问题是它总是返回0.为什么会发生这种情况?我发送了我的代码,请检查是否有任何问题.int x,y;LinearLayout layoutVertical (LinearLayout) findViewById(R.id.liVLayout);L…

java执行sql列名无效_嵌套异常是java.sql.SQLException:无效的列名ORACLE

我尝试在Java中使用JdbcTemplate执行以下oracle查询:select RESOURCE_IDfrom REPRO_PRINTING_JOBwhere (USER_ID? and PRINTING_CENTER_ID?)group by RESOURCE_IDunion allselect RESOURCE_IDfrom REPRO_PRINTING_JOB_OLDwhere (USER_ID? and PRINTING_CENTER_ID…