和许多人一样,我在模拟补丁和正确路径方面遇到了问题。具体来说,我的代码引用了同一文件中的另一个类,而我在修补该引用时遇到了问题
我有以下python文件,package/engine/dataflows/flow.py:
class Flow:
def run(self, type):
if type == 'A':
method1()
elif type == 'B':
method2()
else:
backfill = Backfill()
backfill.run()
class Backfill(Flow):
def run(self):
...
和一个测试文件包/tests/engine/dataflows/test_Flow.py
import unittest
from unittest.mock import Mock, patch
from engine.dataflows.flow import Flow
class MockFlow(Flow):
...
class TestFlowRun(unittest.TestCase):
def setUp(self):
self.flow = MockFlow()
def test_run_type_c(self):
with patch('engine.dataflows.flow.Backfill') as mock_backfill:
self.flow.run(type='C')
assert mock_backfill.run.call_count == 1
该修补程序的工作原理是,在使用pytest运行时不会抛出错误,但断言失败。我假设这是因为在初始化MockFlow时,对回填类的本地引用基本上已经被导入,但我无法找到处理此问题的修补路径
py的内容包括flow基类和几个实现不同数据流模式的子类。它们位于同一个文件中,便于理解和共同依赖
问题是您正在检查一个类的run()函数,而不是该类的实例化。模拟回填类将通过其构造函数/init返回该类的实例这是您要检查的模拟/对象
相关问题 更多 >
编程相关推荐