4
我的代碼模擬補丁的組織結構如下:與__init__.py
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時,我(as預期)出現錯誤:
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
更改爲不同的符號來解決此問題。
代碼的組織方式,我想避免這樣的命名更改。我怎樣才能以Y
的方式在正確的地方使用patch
?
基本上我說的,而是更早。 :-) –
@MartijnPieters:這個問題基本上有一個答案。 :) –