在日常的測試工作中,有時會有需要調用外部接口,拿到返回數據用以滿足當前的測試任務的需求。但是當外部接口不可用,或者沒有提供測試用環境時,我們就需要自己來mock一個接口的返回內容了,先讓我們看一看下面的這段代碼
from wsgiref.simple_server import make_server def application(environ,response): response('200 OK', [('Content-Type', 'text/html')]) res = b'BestTest' return [res] http = make_server('',8000,application) print('server in 8000....') http.serve_forever()
上面的application()函數就是符合WSGI標准的一個HTTP處理函數,它接收兩個參數:
- environ:一個包含所有HTTP請求信息的dict對象;
- response:一個發送HTTP響應的函數。
而response('200 OK', [('Content-Type', 'text/html')])
則是將http響應的header發出去,同時需要注意的是只能發送一次。response()
函數會接收兩個參數,一個是HTTP響應碼,也就是'200 OK'
,一個是一組list表示的HTTP Header,每個Header用一個包含兩個str的tuple表示。
直接運行這段代碼,同時請求我們本機的ip:8000 或127.0.0.1:8000這個地址,在這時會發現我們設置的返回結果出現在了屏幕上。
但是問題就來了,有的人會問:我要的接口返回的是一段json返回呀,你這個只是一個字符串的返回我根本用不了啊,那么讓我們來試試下面這一段
from wsgiref.simple_server import make_server import json def application(environ,response): response('200 OK', [('Content-Type', 'text/json')]) res = {'data':[{"class":'BestTest性能測試',"Teacher":'安大叔'}, {"class":'BestTest性能測試',"Teacher":'liml'}]} return [json.dumps(res).encode('utf-8')] http = make_server('',8000,application) print('server in 8000....') http.serve_forever()
我們再來運行一下試試看
好了,這下返回的結果可以使用了。