[英]Mock calls to class constructor with different class
我有以下課程:
class A(object):
def __init__(self):
self.inner_class = B()
def foo():
self.inner_class.bar()
class B(object):
def bar():
return 'No'
class C(object):
def bar():
return 'Yes'
我想模擬這樣,而不是調用B的構造函數,而是得到一個C對象。
@patch(...something....)
def test_get_yes(self):
A().foo() # Expected output is 'Yes'
我該怎么做?
我知道我可以編寫以下測試,但我不願意:
def test_get_yes(self):
a = A()
a.inner_class = C()
a.foo() # Expected output is 'Yes'
您需要模擬的是A.__init__.__globals__
B
的條目。
假設一組類定義與您的問題中出現的稍有不同:
class A(object):
def __init__(self):
self.inner_class = B()
def foo(self):
return self.inner_class.bar()
class B(object):
def bar(self):
return 'No'
class C(object):
def bar(self):
return 'Yes'
然后,以下應該工作:
@patch.dict(A.__init__.__globals__, {'B': C})
def test_get_yes():
print(A().foo())
test_get_yes() # Outputs yes, not no
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.