4
嘿,所以我有一個類方法,我試圖測試,需要兩個修補方法,'ConfigB。 INIT「和 'listdir同時':os.listdir的模擬修補程序不適用於單元測試
from os import listdir
from config.ConfigB import ConfigB
class FileRunner(object):
def runProcess(self, cfgA)
cfgB = ConfigB(cfgA)
print(listdir())
我有以下測試設置:
import unittest
import unittest.mock imort MagicMock
import mock
from FileRunner import FileRunner
class TestFileRunner(unittest.TestCase):
@mock.patch('ConfigB.ConfigB.__init__')
@mock.patch('os.listdir')
def test_methodscalled(self, osListDir, cfgB):
cfgA = MagicMock()
fileRunner = FileRunner()
cfgB.return_value = None
osListDir.return_value = None
fileRunner.runProcess(cfgA)
現在,修補模擬和返回值適用於 'ConfigB.ConfigB',但它確實不適用於'os.listdir'。當print(listdir())方法運行時,我得到當前目錄中的一個文件列表,而不是像補丁返回值中指定的'None'值。任何想法出了什麼問題?
你的頭像看起來像我想要刷的屏幕上的頭髮。 – user2357112
這就是訣竅。 –
是的,工作!我將@ mock.patch('os.listdir')更新爲@ mock.patch('FileRunner.listdir'),並返回預期值。 – EliSquared