我需要使用pytest来monkeypatch一个被其他类继承的mixin类,python 3.x,我有这个例子:
class A:
@classmethod
def foo(cls) -> str:
# do some database operation
return "foo"
class B(A):
pass
我最初想到的monkeypatch方法是这样的:
def test_B(monkeypatch):
def mock_b__foo() -> str:
return 'bar'
monkeypatch.setattr('B.foo', mock_b__foo)
然后我试了这个:
def test_B(monkeypatch):
class MockA:
@classmethod
def foo(cls) -> str:
# do some database operation
return "bar"
monkeypatch.setattr('A', MockA)
这并不像预期的那样工作,B.foo仍然从A而不是MockA继承,因为我猜导入是一次性计算的,有什么方法可以实现这一点吗?
1条答案
按热度按时间fbcarpbf1#
@chepner的注解解决了第一个代码片段的问题,
monkeypatch.setattr
应该用x1m1 n1 '的示例调用,而不是function
,代码应该是: