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