- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经成功地用 PropertyMock
模拟了一个属性,但我不知道如何检查类的哪个实例调用了该属性。我如何断言该属性是在一个对象上调用的,而不是在另一个对象上调用的?
这是我想断言 foo1.is_big
的示例被调用,和 foo2.is_big
不是:
from mock import PropertyMock, patch
class Foo(object):
def __init__(self, size):
self.size = size
@property
def is_big(self):
return self.size > 5
f = Foo(3)
g = Foo(10)
assert not f.is_big
assert g.is_big
with patch('__main__.Foo.is_big', new_callable=PropertyMock) as mock_is_big:
mock_is_big.return_value = True
foo1 = Foo(4)
foo2 = Foo(9)
should_pass = False
if should_pass:
is_big = foo1.is_big
else:
is_big = foo2.is_big
assert is_big
# How can I make this pass when should_pass is True, and fail otherwise?
mock_is_big.assert_called_once_with()
print('Done.')
最佳答案
也许有更好的方法,但我通过创建 PropertyMock
的子类让它工作。它将被调用的实例记录为模拟调用的参数之一。
from mock import PropertyMock, patch
class Foo(object):
def __init__(self, size):
self.size = size
@property
def is_big(self):
return self.size > 5
class PropertyInstanceMock(PropertyMock):
"""Like PropertyMock, but records the instance that was called."""
def __get__(self, obj, obj_type):
return self(obj)
def __set__(self, obj, val):
self(obj, val)
with patch("__main__.Foo.is_big", new_callable=PropertyInstanceMock) as mock_is_big:
mock_is_big.return_value = True
foo1 = Foo(4)
foo2 = Foo(9)
should_pass = False
if should_pass:
is_big = foo1.is_big
else:
is_big = foo2.is_big
assert is_big
# Now this passes when should_pass is True, and fails otherwise.
mock_is_big.assert_called_once_with(foo1)
print("Done.")
关于python - 断言在特定实例上调用了 PropertyMock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37553552/
我已经成功地用 PropertyMock 模拟了一个属性,但我不知道如何检查类的哪个实例调用了该属性。我如何断言该属性是在一个对象上调用的,而不是在另一个对象上调用的? 这是我想断言 foo1.is_
我正在使用 Michael Foord 的模拟库,对此有疑问。 我想模拟一个属性,所以我这样做: eggs = mock.PropertyMock(return_value='eggs') spam
我正在使用 pytest-mock wrapper用 pytest。 我无法让 PropertyMock 与 requests package 一起工作. 这是我尝试进行单元测试的函数示例: def
我正在尝试将 MagicMock 上的实例方法的可调用更改为 PropertyMock,因为这就是访问它的方式(Django 模型列)。但测试失败了 _mock_self = 给出以下代码 # v
我正在尝试模拟一个类的属性(@property 装饰器)并遇到了这种不正确的行为: >>> from mock import MagicMock, PropertyMock >>> m = Mag
我是一名优秀的程序员,十分优秀!