我有一个类嘲笑的例子:
worker.py
import os
class Helper:
def __init__(self, path):
self.path = path
def get_folder(self):
base_path = os.getcwd()
return os.path.join(base_path, self.path)
def get_path(self):
return self.path
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
from unittest import TestCase, mock
from worker import Worker, Helper
class TestWorkerModule(TestCase):
def test_patching_class(self):
with mock.patch('worker.Helper') as MockHelper:
MockHelper.return_value.get_path.return_value = 'testing'
worker = Worker()
self.assertEqual(worker.work(), 'testing')
只要2个类在同一文件中,测试就会返回OK。将它们分为2个文件(对于Helper类为worker_1.py和对于Worker类为worker_2.py),测试失败,并带有:
AssertionError: 'db' != 'testing'
为什么?我该如何纠正这种行为?
谢谢
假设我们有两个文件,worker.py和helper.py