簡體   English   中英

使用Mock在Python單元測試中模擬函數內部的函數

[英]Mocking a function inside a function in Python Unit Testing using Mock

我正在使用Mock進行Python單元測試。 我正在測試一個函數foo ,它包含一個不返回任何內容的函數bar ,但填充變量x (類型:io.StringIO)作為副作用。 我曾經嘲笑bar使用MagicMock,但我不知道如何分配到x從測試腳本。

我有以下情況:

def foo():
    x = io.StringIO()
    bar(x)                 # x is filled with some string by bar method
    here some operation on x

要為foo編寫一個單元測試用例,我已經使用MagicMock(返回值=無)模擬了bar ,但是如何分配給foo所需的x

你需要模擬io.StringIO ,然后你可以用其他東西替換它:

@mock.patch('mymodule.io.StringIO')
def test_foo(self, mock_stringio):
    mock_stringio.return_value = mock.Mock()

請注意return_value的使用,這意味着您正在StringIO()StringIO()調用返回的實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM