在Python中使用..as子句断言

时间:2016-01-18 12:19:03

标签: python mocking python-unittest python-mock

所以,拥有unittest.mock和代码

with pysftp.Connection(host, username, password, port) as sftp:
             sftp.get("filename")

......可以断言Connection.assert_called_with(host, username, password, port)。 但是断言Connection.assert_called_with(host, username, password, port).get("filename")失败了。

我如何断言?

1 个答案:

答案 0 :(得分:1)

我假设您希望patch pysftp.Connection参考。

以下是您可以进行测试的示例:

>>> import pysftp
>>> from mock import *

>>> with patch("pysftp.Connection") as mock_connection:
...     with pysftp.Connection("1.2.3.4", "user", "pwd", 12345) as sftp:
...         sftp.get("filename")
...     mock_connection.assert_called_with("1.2.3.4", "user", "pwd", 12345)
...     sftp.get.assert_called_with("filename")
... 
<MagicMock name='Connection().__enter__().get()' id='139907730030992'>

由于sftp对象是MagicMock,您可以直接使用它。正如您在日志中看到的sftp

完全相同
mock_connection.return_value.__enter__.return_value
  • Connection - &gt; mock_connection
  • () - &gt; return_value