2016-01-18 4 views
1

Итак, имея unittest.mock и кодУтверждая положение with..as в Python

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") не удается.

Как это утверждать?

+2

Пожалуйста, пост полный runable пример, где ясно, что вы ' patch'/'mock' и как. Как будто вопрос не имеет смысла. –

ответ

1

Я предполагаю, что вы хотели бы patchpysftp.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 ->mock_connection
  • () ->return_value