Tôi đang cố gắng sử dụng các công cụ khác nhau để chế giễu và tìm hiểu tốt nhất. Tôi thực sự thích flexmock cho sự đơn giản của nó, nhưng tôi không thể tìm ra cách để mô phỏng hành vi của datetime.datetime.now().Mocking với Flexmock datetime.datetime.now
Làm thế nào để chế giễu sau hành vi trong flexmock?
>>> from datetime import datetime
>>> mocker = Mocker()
>>> fake_datetime=mocker.replace(datetime)
>>> fake_datetime.now()
<mocker.Mock object at 0x027F1990>
>>> mocker.result(datetime(year=2012, month=12, day=12))
>>> mocker.replay()
>>> datetime.now()
datetime.datetime(2012, 12, 12, 0, 0)
Khi tôi cố gắng cùng trong flexmock:
>>> from datetime import datetime
>>> fake_datetime = flexmock(datetime)
Traceback (most recent call last):
File "C:\virtualenvs\webui\lib\site-packages\flexmock.py", line 1194, in flexmock
return _create_partial_mock(spec, **kwargs)
File "C:\virtualenvs\webui\lib\site-packages\flexmock.py", line 1013, in
_create_partial_mock
if (_attach_flexmock_methods(mock, Mock, obj_or_class) and
File "C:\virtualenvs\webui\lib\site-packages\flexmock.py", line 1030, in
_attach_flexmock_methods
'Python does not allow you to mock builtin objects or modules. '
'Python does not allow you to mock builtin objects or modules. '
MockBuiltinError: Python does not allow you to mock builtin objects or modules.
Consider wrapping it in a class you can mock instead
hoặc
>>>flexmock(datetime).should_receive('datetime.now').and_return(datetime.datetime(2012,12,10))
>>> datetime.datetime.now()
Traceback (most recent call last):
File "<console>", line 1, in <module>
AttributeError: 'function' object has no attribute 'now'