1.找到你要替換的物件,這個物件可以是乙個類,或者是乙個函式,或者是乙個類例項。
2.然後例項化mock類得到乙個mock物件,並且設定這個mock物件的行為,比如被呼叫的時候返回什麼值,被訪問成員的時候返回什麼值等。
3.使用這個mock物件替換掉我們想替換的物件,也就是步驟1中確定的物件。
4.之後就可以開始寫測試**,這個時候我們可以保證我們替換掉的物件在測試用例執行的過程中行為和我們預設的一樣。
舉個狀態碼的例項import requests
def requestr():
return r.status_code # 拿到status_code的狀態碼
print(requestr()) # 200
import requests
def requestr():
return r.status_code # 拿到status_code的狀態碼
print(requestr()) # 200
import unittest
from unittest import mock
class testclient(unittest.testcase): # 建立乙個unittest類
def test_success_request_01(self): # 建立一條case
self.assertequal(requestr(), 200) # 真實的介面斷言;介面開發完,做斷言,返回200表示正確
# 介面未開發完,使用mock物件替換掉'r.status_code'的值
def test_success_request_02(self): # 建立一條預期與實際一致的正確case
requestr = mock.mock(return_value=200) # mock設為200
self.assertequal(requestr(), 200) # 預期與實際一致,通過
def test_fail_request_01(self): # 建立一條預期與實際一不致的case
requestr = mock.mock(return_value=404) # mock設為404
self.assertequal(requestr(), 200) # 實際結果是200,失敗
def test_fail_request_02(self): # 建立一條預期與實際一致的錯誤case
requestr = mock.mock(return_value=404) # mock設為404
self.assertequal(requestr(),404) # 實際結果404 通過
當介面開發完成後,我們就可以把mock資料移除掉,直接執行我們的斷言了,所以有了mock資料,我們可以盡早的完成用例,介入測試
再來舉個json的例項
import requests
def cnodejs():
response = requests.get('')
return response.json()['success'] # 取鍵['success']的值
print(cnodejs()) # true
import requests
import unittest
from unittest.mock import mock
def cnodejs():
response = requests.get('') # 當這個介面沒有開發完,可以先寫mock用例模擬資料
return response.json()['success'] # 取鍵['success']的值
print(cnodejs())
# mock資料模擬 做斷言
class mytest(unittest.testcase):
# 寫用例
def test_case_01(self):
self.assertequal(cnodejs(), true, '通過') # 這是真實的介面斷言
def test_case_02(self):
cnodejs = mock(return_value=true) # 模擬介面斷言 mock物件加() ,呼叫return_value返回值 模擬true 斷言結果為true 結果為成功了
self.assertequal(cnodejs(), true, '通過了...')
def test_case_03(self):
cnodejs = mock(return_value=false) # 模擬false 斷言結果為true 結果為失敗了
self.assertequal(cnodejs(), true, '失敗了...')
def test_case_04(self):
cnodejs = mock(return_value=) # 也可以mock直接模擬success這個鍵值對是否等於斷言結果的鍵值對 等於 用例通過
self.assertequal(cnodejs(), , '通過了...')
if __name__ == '__main__':
unittest.main()
python介面測試 mock
1 什麼叫mock?答 模擬資料 假資料,不是介面真正返回的資料。2 為什麼要引入mock測試?有兩種場景需要引入 1 介面還未開發完成,但是測試人員需要介入介面測試 2 介面呼叫不方便,需要呼叫第三方介面 3 方式 1 客戶端mock 1 安裝第三方庫,pip install mock 2 建構函...
python介面測試之mock 九
在中對mock server已經做了 初步的介紹,今天這裡繼續接著之前的介紹進行,我們先看之前的mock server部分,之前編寫 了乙個登入的mock,具體json檔案見如下的內容 response 檢視上面的內容,我們可以看出,這樣的方式並不是那麼的友好,在ui或者介面的自動化測試中,我們知道...
介面測試例項
一 postman介面測試工具 1.get請求 2 通過工具postman postman請求方式選擇get,輸入位址和請求引數,點選send 2.post請求 請求方式選擇post,輸入url,body中輸入介面文件中需要傳的引數 3.入參json請求 4.需要新增header資訊 referer...