使用Python中的mock模塊進行單元測試


在進行單元測試的時候,有時候會遇到這種情況:

出於某些原因,我們不想測試某一部分內容,但是我們想要測試的部分卻依賴這部分內容。

這時候,可以使用mock模塊來模擬調用這部分內容,並給出返回結果,舉例如下:

比如我們不想測試類C中的函數a,只想得到一個返回結果,可以這么寫:

#從Python 3.3 開始,mock被整合到了unittest中
#此時使用 from unittest import mock 引入mock模塊
#python 3.3 之前使用 import mock
from
mock import patch import unittest class TestXXX(unites.TestCase) @patch.object(C, 'a')
  # or: @patch('C.a')
def test_xxx(self, Ca): Ca.return_value = 20 ......

這樣在測試中調用C類中的a函數將直接返回20

以下方式也能實現目的:

...
    def test_xxx(self):
        c = C()
        c.a = mock.Mock(return_value = 20)
......

以上模擬的是類中的函數,也可以使用Mock來模擬普通函數

from mock import Mock

mfunc = Mock()
mfunc.return_value = 3

mfunc()    #3
  

也可以使用參數調用,並assert參數:

mfunc(1, 'a')            # 3
mfunc.assert_called_with(1, 'a') #assert that calls are made in a particular way

 http://cizixs.com/2015/05/28/python-mock-usage


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM