【发布时间】:2017-11-18 05:47:56
【问题描述】:
我有一个要测试的类方法,它需要两个修补方法,ConfigB.__init__ 和 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 值。知道出了什么问题吗?
【问题讨论】:
标签: python unit-testing mocking patch