我正在尝试模拟一个在我要测试的类的构造函数中实例化的类。如果我在与我尝试测试的模块相同的模块中定义我试图模拟的类,那么一切正常,但是当它们位于单独的模块中时,我会出错。
这是我的示例,取自此处(请注意,在我的真实示例中,测试类位于“tests”子模块中,其他两个文件位于“app.src.code ...”模块中。
我错过了什么?
助手.py:
import os
class Helper:
def __init__(self, path):
self.path = path
def get_path(self):
base_path = os.getcwd()
return os.path.join(base_path, self.path)
工人.py:
from helper import Helper
class Worker:
def __init__(self):
self.helper = Helper('db')
def work(self):
path = self.helper.get_path()
print(f'Working on {path}')
return path
test_worker.py:
import unittest
from unittest.mock import patch
from worker import Worker
class WorkerTest(unittest.TestCase):
def test_patching_class(self):
with patch('helper.Helper') as MockHelper:
MockHelper.return_value.get_path.return_value = 'testing'
worker = Worker()
MockHelper.assert_called_once_with('db')
self.assertEqual(worker.work(), 'testing')