一、mock是什麼?
英譯中含義有:虛假的; 不誠實的; 模仿的; 模擬的 這個意思
這個庫的主要功能就是模擬一些事務
官方解釋:mock是python中乙個用於支援單元測試的庫,它的主要功能是使用mock物件替代掉指定的python物件,以達到模擬物件的行為
二、為什麼要用mock?
舉例:
假設你開發乙個專案,裡面包含了乙個登入模組,登入模組需要呼叫身份證驗證模組中的認證函式,該認證函式會進行值的返回,然後系統根據這個返回值來做判斷是否能進行登入。但是身份證驗證模組中的認證函式只有在正式上線的系統上才提供。公司內部的測試環境或者開發環境上不提供。
如果此時需要進行登入模組的業務測試或介面測試,該如何做?
方法一:
搭建乙個測試伺服器,在測試的時候,讓認證函式和這個測試伺服器互動,返回值給登入模組;
缺點:1、測試伺服器可能不好搭建,或者搭建效率很低;
2、搭建的測試伺服器可能無法返回所有可能的值,或者需要大量的工作才能達到這個目的。 方法二:
使用mock函式模擬即可。
三、mock應用
3.1 mock安裝
在python 3.3以前的版本中,需要另外安裝mock模組,可以使用pip命令來安裝:
pip install mock
從python 3.3開始,mock模組已經被合併到標準庫中,被命名為unittest.mock,可以直接import進來使用:
from unittest import mock
備註:目前python 3.3之後的版本,也可以使用第一種方式應用mock
3.2 mock簡單舉例
from unittest import mock
def add(num1,num2):
return num1 + num2 # pass
add_value = mock.mock(return_value=200) # 建立mock物件
add = add_value # 把mock物件賦值給add方法
print( add(10,20) )
從上述**執行可以看出,假使我把add()方法的實現改為pass,暫時還未實現,也可以通過mock先返回所需要的資料。
3.3 mock應用舉例
import requests
def send_request(url):
r = requests.get(url)
return r.status_code
def visit_newdream():
return send_request("
")print( visit_newdream() )
上述**是訪問我們公司的官網,假設該官網訪問請求還沒被實現,此時 visit_newdream() 方法需要 send_request 返回響應狀態碼。這個時候可以用到mock。
# 當前檔名為 mock_demo.py
import unittest
from unittest import mock
import requests
import mock_demo
def send_request(url):
r = requests.get(url)
return r.status_code
def visit_newdream():
return send_request("
")class testclient(unittest.testcase):
def test_success_request(self):
success_send = mock.mock(return_value='200')
mock_demo.send_request = success_send
self.assertequal(mock_demo.visit_newdream(), '200')
if __name__=="__main__":
unittest.main()
上述**完成了mock的簡單應用,由於mock_demo.send_request = success_send 把mock物件賦值給了方法,使得方法再次呼叫的時候使用了mock的方法完成把模擬返回值傳遞給mock_demo.visit_newdream()方法。
四、小結
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援。
nginx常用模組原理及如何新增模組
一 常見模組 模組作用 記錄nginx的基本訪問資訊,讓使用者了解nginx的工作狀態資訊。實現nginx的訪問控制,例可以允許或指定的ip位址訪問某些虛擬主機或目錄 實現把每乙個使用者訪問 的日誌資訊記錄到指定的日誌檔案中,供 提供者分析使用者的瀏覽行為 nginx提供https支援 實現web伺...
saltstack通訊原理及編寫模組
第三章 saltstack編寫自己的模組 saltstack的兩個埠 4506埠的作用 salt master ret介面,支援認證 檔案服務 結果手機等功能 4505埠的作用 salt master pub介面,提供遠端執行命令傳送功能 saltstack通訊過程 1 salt minion啟動時...
Python模組zipfile原理及使用方法詳解
zipfile是python裡用來做zip格式編碼的壓縮和解壓縮的,由於是很常見的zip格式,所以這個模組使用頻率也是比較高的 zipfile裡有兩個非常重要的class,分別是zipfile和zipinfo,在絕大多數的情況下,我們只需要使用這兩個class就可以了。zipfile是主要的類,用來...