如何用 **lambda** 模拟 Python 中的 属性?
How to mock a property in Python with a **lambda**?
我有一个 属性 并想在单元测试中模拟它:
class Foo:
@property
def bar(self):
return random.randint()
但是我需要在 mock 中定义一个函数或 lambda,因为值不会是常量
在测试中。为简单起见,我在示例中删除了对 self.other_attribute
的依赖。
我试过 PropertyMock 但到现在为止还无法正常工作。
如果您想使用函数或 lambda,则不需要 PopertyMock。
您可以使用property(lambda ....)
import random
from unittest.mock import patch
class Foo:
@property
def bar(self):
return random.randint()
with patch('__main__.Foo.bar', property(lambda foo: ...)):
assert Foo().bar == ...
我有一个 属性 并想在单元测试中模拟它:
class Foo:
@property
def bar(self):
return random.randint()
但是我需要在 mock 中定义一个函数或 lambda,因为值不会是常量
在测试中。为简单起见,我在示例中删除了对 self.other_attribute
的依赖。
我试过 PropertyMock 但到现在为止还无法正常工作。
如果您想使用函数或 lambda,则不需要 PopertyMock。
您可以使用property(lambda ....)
import random
from unittest.mock import patch
class Foo:
@property
def bar(self):
return random.randint()
with patch('__main__.Foo.bar', property(lambda foo: ...)):
assert Foo().bar == ...