के साथ मॉकिंग मैं मॉकिंग और सर्वोत्तम खोज के लिए विभिन्न टूल्स का उपयोग करने की कोशिश कर रहा हूं। मुझे वास्तव में इसकी सादगी के लिए फ्लेक्समॉक पसंद है, लेकिन मैं यह नहीं समझ सकता कि datetime.datetime.now() के व्यवहार का नकल कैसे करें।फ्लेक्समॉक datetime.datetime.now
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)
जब मैं 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
या
>>>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'