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.盡可能的模擬接口在真實環境下的狀態,進行最大程度的模擬“客戶端狀態”。
目前所做的事情已經基本可以實現了部分客戶端及接口校驗,當然還有很多不足。