如何断言setter函数已被调用或值已被修改?

时间:2020-02-03 08:54:26

标签: python

我想测试以下代码是否正确设置了超时时间。

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.

0 个答案:

没有答案