Создание метода для объекта mock.Mock с побочным эффектом
>>> from unittest import mock
>>> m = mock.Mock()
>>> def print_hello():
... print("hello world!")
... return 43
...
❶ >>> m.some_method.side_effect = print_hello
>>> m.some_method()
hello world!
43
❷ >>> m.some_method.call_count
1
Мы присвоили целую функцию атрибуту some_method ❶. Технически это позволяет реализовать более сложный сценарий в тесте, благодаря тому что можно включить любой необходимый для теста код в объект-пустышку. Далее нужно передать этот объект в функцию, которая его ожидает.
Атрибут ❷ call_count — это простой способ проверки количества раз, когда метод был вызван.
Библиотека mock использует паттерн «действие — проверка»: это значит, что после тестирования нужно убедиться, что действия, замененные на пустышки, были выполнены корректно.
Путь Python. Черный пояс по разработке, масштабированию, тестированию и развертыванию
·
Джульен Данжу