好的,所以我有一系列 Python3 代码,如下所示:
foo.py
from bar import ClassB
class ClassA:
@staticmethod
def get_all(fn):
something = ClassB(fn)
return something.lines()
酒吧.py
def baz(f):
with open(f, 'rt') as fin:
ln = fin.readlines()
return ln
class ClassB:
def __init__(self, f):
self._baz = baz(f)
def lines():
return self._baz
现在我写一个这样的单元测试:
test_foo.py
from unittest import TestCase, mock
from foo import ClassA
class Test_A(TestCase):
@mock.patch("bar.baz")
def setUp(self, mock_baz):
mock_baz.return_value = ['a', 'b']
def test_1(self):
self.assertEqual(ClassA.get_all('whatever'), ['a', 'b']
问题:
运行测试会导致 FileNotFoundError,这意味着它mock.patch("bar.baz")
不起作用。
我该如何解决这个问题,以便baz()
正确地模拟函数?