我有一个类,使用一个类变量来选择要执行的逻辑。
#in file1:
class SomeHelper():
def __init__(self):
self.my_var = 0
#in file2:
import file1
class MyClass():
...
...
def calculate():
inst = file1.SomeHelper()
if x > inst.my_var:
etc etc
我正在编写单元测试并模拟另一个文件中的SomeHelper()函数:
from file 2 import MyClass
# tried both
@patch('file2.file1') OR @patch('file2.file1.SomeHelper')
def test_calculate(self, mock_helper):
mock_helper.my_var = 0
to_test = MyClass.calculate()
我得到了以下错误:
TypeError: '>'不支持'MagicMock'和'int'实例之间的比较。
我认为在模块打补丁后定义了my_var
。
mock_helper
是file1
的整体,你需要使用mock_helper.SomeHelper().my_var
进行操作。但请注意,模拟这个过程的复杂性表明您需要应用其他模式,例如依赖反转,以使代码更易于测试。 - jonrsharpe