python介面測試之mock(九)
阿新 • • 發佈:2019-01-23
初步的介紹,今天這裡繼續接著之前的介紹進行,我們先看之前的mock-server部分,之前編寫
了一個登入的mock,具體json檔案見如下的內容:
[ { "request": { "method":"post", "uri":"/login", "json": { "username":"admin", "password":"admin", "roleID":22 } }, "response": { "json": {"username":"wuya", "userID":22, "token":"asdgfhh32456asfgrsfss" } } } ]
檢視上面的內容,我們可以看出,這樣的方式並不是那麼的友好,在UI或者介面的自動化測試中,我們知道在
TDD的模式中,對資料進行分離,這樣也是為了維護的方便,這樣的目的是為了後期自動化測試用例的擴充套件性,
和它的易維護性,那麼下來我們來對上面的json檔案進行修改下,對response部分的資料進行分離下,把它
放在一個檔案中,這樣就可以分離了出來,我們把response的內容從login.json分離到login_response.json
切記login.json與login_response.json務必保持在同一個目錄下,見login.json的內容:
[ { "request": { "method":"post", "uri":"/login", "json": { "username":"admin", "password":"admin", "roleID":22 } }, "response": { "file":"login_response.json" } } ]
見login_response.json檔案的內容:
{ "username":"wuya", "userID":22, "token":"asdgfhh32456asfgrsfss" }
執行login.json檔案後,訪問該介面,看是否OK,見執行login.json檔案的命令:
使用postman檢視該介面,看是否OK,見如下的截圖:
下面我們再進行一個業務,就是輸入一個車牌號,查詢該車牌號的顯示時長,和它的停車費用,直接在loginjson
檔案中完善,見完善後的內容:
[ { "request": { "method":"post", "uri":"/login", "json": { "username":"admin", "password":"admin", "roleID":22 } }, "response": { "file":"login_response.json" } }, { "request": { "method":"post", "uri":"/parkinside", "json": { "token":"asdgfhh32456asfgrsfss", "vpl":"AJ3585" } }, "response": { "file":"parkinside.json" } } ]
見parkinside.json檔案的內容:
{ "vplInfo": { "userID":22, "username":"wuya", "vpl":"京AJ3585" }, "Parking time long":"20小時18分鐘", "Parking fee":"20$" }
見查詢停車時長的介面請求的結果,見如下的postman截圖:
下面我們通過python語言,來對如上的二個介面進行實戰的操作,切記parkinside的介面是在登入之後才可以操作的業務,未登入操作該業務,返回502無效的
token,見實現的程式碼:
#!/usr/bin/env python # -*- coding:utf-8 -*- import unittest import requests class MockTest(unittest.TestCase): def setUp(self): self.url='http://localhost:12306' def tearDown(self): pass def test_login(self,url='/login'): '''驗證登入的介面''' data={ "username":"admin", "password":"admin", "roleID":22 } r=requests.post(self.url+url,json=data) self.assertEqual(r.status_code,200) self.assertEqual(r.json()['username'],'wuya') def getToken(self,url='/login'): '''登入成功後獲取token''' data={ "username":"admin", "password":"admin", "roleID":22 } r=requests.post(self.url+url,json=data) return r.json()['token'] def test_parkingside(self,url='/parkinside'): '''驗證查詢停車時長介面''' data={ "token":self.getToken(), "vpl":"AJ3585" } r=requests.post(self.url+url,json=data) self.assertEqual(r.status_code,200) self.assertEqual(r.json()['Parking time long'],u'20小時18分鐘') self.assertEqual(r.json()['Parking fee'], u'20$') if __name__=='__main__': unittest.main(verbosity=2)
轉載地址:http://www.cnblogs.com/weke/articles/6941884.html