在現在的軟件開發過程中,特別是app的部分,需要的很多數據以及內容,都是來自server端的API,但是不能保證
在客戶端開發的時候,api在server端已經開發完成,專門等着前端來調用,理想的情況是前端在開發的時候,已經有人寫
好了接口,直接調用就可以了,但是這僅僅是理想的情況,很多時候,現實總是比理想多一層思考和磨難,如果在前端開發
的時候,提供api的同學沒有提供,那么怎么辦?等待還是自己先開發,等待肯定是愚蠢的做法,那么自己開發怎么來解決
api提供數據的這個問題,那么使用mock就可以很好的解決,什么是mock?mock簡單的理解就是開發在開發的過程中,
需要依賴一部分的接口,但是對方沒有提供或者環境等等情況,總之是沒有,那么開發使用mock server自己來mock
數據,方便自己正常的進行開發和對編寫的功能進行自測。
在https://github.com/dreamhead/moco地址中可以下載到moco-runner-0.11.0-standalone.jar,下載下來
就是一個jar,在該地址中,作者對這部分有詳細的說明和啟動mock server方法,這里不在重復的再次說明。下來我們
簡單的編寫一個登錄的,見編寫的login.json字符串:
[ { "request": { "method":"post", "uri":"/login", "json": { "username":"admin", "password":"admin", "roleID":22 } }, "response": { "json": { "username":"wuya", "userID":22, "token":"asdgfhh32456asfgrsfss" } } } ]
在運行命令前,最好讓mock server與編寫的login.json文件是在同一個目錄下,見執行的命令:
java -jar moco-runner-0.10.0-standalone.jar http -p 12306 -c login.json
在如上的命令中,java -jar moco-runner-0.10.0-standalone.jar是啟動jar,沒什么可說的,http表示進行的是http協議,
-p后面跟的是端口號,這里端口號指的是12306,-c后面跟編寫的json文件,這里是login.json,見執行如上的命令后出現的
信息(切記無任何的錯誤信息表示OK,如果有錯誤,慢慢的進行檢查錯誤),見截圖:
OK,下來我們使用postman來驗證下,我們mock的登錄接口是不是OK的,見postman中填寫的信息,見截圖:
header為:
-
Content-Length →63
-
Content-Type →application/json
OK,學習到這里,我們使用python編寫一個接口測試用例,來驗證換這個登錄的接口和獲取它的token,見實現的代碼:
#!/usr/bin/env python # -*- coding:utf-8 -*- import unittest import requests class MockLoginTest(unittest.TestCase): def setUp(self): self.url='http://localhost:12306' def tearDown(self): pass def getUrl(self,path): return self.url+path def getToken(self): '''獲取token''' data={ "username":"admin", "password":"admin", "roleID":22 } r=requests.post(self.getUrl('/login'),json=data) return r.json()['token'] def test_login(self): '''驗證登錄的接口''' data={ "username":"admin", "password":"admin", "roleID":22 } r=requests.post(self.getUrl('/login'),json=data) self.assertEqual(r.status_code,200) self.assertEqual(r.json()['username'],'wuya') if __name__=='__main__': unittest.main(verbosity=2)
OK,在上面的python代碼中,實現了對登錄接口的驗證和獲取了它的token,當然關於mock server的
詳細的使用,本博客會繼續更新的,謝謝您的關注!祝安!