Flask简单Mock Server

Mock Server充当的角色:

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

一般的应用程序请求方式是GETPOST

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

Flask处理get请求时:

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

Urlparse是将url拆分成6部分,并返回元组。具体实例可以参见:http://my.oschina.net/guol/blog/95699

将带”?”的方式分别将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(‘/<regex(r”[\w\W]*”):ceshi>’,methods=[‘GET’,’POST’])  #匹配所有的url地址

Def allurl(ceshi):

myreqUrl=request.url

Print myreqUrl

Return ‘<h1>所有url返回这个结果!</h1>

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

Regex正则表达式相关学习:

http://www.cnblogs.com/youquan-deng/articles/csharp-regex.html

匹配任意字符:[\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.尽可能的模拟接口在真实环境下的状态,进行最大程度的模拟“客户端状态”。

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

猜你喜欢

转载自blog.csdn.net/jack_chen3/article/details/52434256