用__init__.py模拟补丁

时间:2015-08-15 16:50:54

标签: python unit-testing mocking

我的代码组织如下:

DIR / A.py:

from X import Y

class A:
    ...

DIR / __ INIT __ PY:

from .A import A
__all__ = ['A']

测试/ test_A.py:

class test_A:
    @patch("dir.A.Y")
    def test(self, mock_Y):
        ....

在运行tests / test_A.py时,我(正如预期的那样)得到错误:

AttributeError: <class 'dir.A.A'> does not have the attribute 'Y'

问题在于@patch("dir.A.y")尝试在类Y中找到dir.A.A,而不是在模块dir.A中(实际存在的位置)。

这显然是因为我__init__.py。我可以通过将模块名A和类名A更改为不同的符号来解决这个问题。

代码的组织方式,我想避免这样的命名更改。如何以patch的方式在正确的位置使用Y

0 个答案:

没有答案