在模拟一个类对象时,我无法访问它的属性。 我已经阅读了很多文档,但我对模拟还很陌生,看不出这段代码的问题所在。我期望x和y返回相同的值1e-15。
class test_user_data:
scale = 1e-15
class test_signal(unittest.TestCase):
@patch('xx.user_data', autospec=test_user_data, spec_set=True)
def test_data(self, mock_user_data):
x = xx.user_data()
y = test_user_data()
print(x.scale)
print(y.scale)
但是我得到了
<NonCallableMagicMock name='user_data().timescale' spec_set='float' id='47213638195072'>
1e-15
__init__
吗?还是你希望在模拟对象上发生__init__
的效果?我鼓励你在这里看一下.side_effect
: https://docs.python.org/3/library/unittest.mock.html#quick-guide 它将允许你分配函数指针(在这种情况下是指向原始__init__
的函数指针),并可能实现你正在寻找的内容。 - wholevinski__init__
中初始化。使用side_effect
可以解决问题。具体方法如下:@patch('xx.user_data', autospec=test_user_data, return_value=test_user_data, side_effect=test_user_data.__init__(test_user_data))
- Damo