我想测试以下代码是否正确设置了超时时间。
def timeoutDecorator(function):
@wraps(function)
def wrapper(*args, **kwargs):
if 'dev_timeout' in kwargs:
conn = __proxy__['junos.conn']()
restore_timeout = conn.timeout
conn.timeout = kwargs.pop('dev_timeout', None)
try:
result = function(*args, **kwargs)
conn.timeout = restore_timeout
return result
except Exception:
conn.timeout = restore_timeout
raise
else:
try:
return function(*args, **kwargs)
except Exception:
raise
return wrapper
测试用例:我正在测试设置器是否至少被调用过一次,但是无法说没有被调用。我在做什么错了?
def test_timeout_decorator_set_timeout(self):
with patch('salt.modules.junos.rpc') as mock_rpc, patch('jnpr.junos.device._Connection.timeout') as mock_timeout:
junos.rpc('get-interface-information', format='json', dev_timeout=60)
mock_timeout.assert_called_once()
mock_rpc.assert_called_with('get-interface-information', format='json')
错误:
============================== Overall Tests Report ===============================
*** unit.modules.test_junos Tests **************************************************
-------- Failed Tests ------------------------------------------------------------
-> unit.modules.test_junos.Test_Junos_Module.test_timeout_decorator_set_timeout .
Traceback (most recent call last):
File "/Users/rsmekala/PycharmProjects/salt/tests/unit/modules/test_junos.py", line 1469, in test_timeout_decorator_set_timeout
mock_timeout.assert_called_once()
File "/Users/rsmekala/PycharmProjects/salt/venv/lib/python2.7/site-packages/mock/mock.py", line 919, in assert_called_once
raise AssertionError(msg)
AssertionError: Expected 'timeout' to have been called once. Called 0 times.