Unittest макет патча не создает макет для метода

#python-3.x #python-unittest #python-unittest.mock

Вопрос:

Вот структура проекта, которая у меня есть —

 src/
    package1/
       __init__.py
       file1.py # has the method -> _method_name
       
    tests/
       __init__.py
       test_file1.py
 

Я использую unittest для тестирования своего кода. Я хочу смоделировать метод в пакете 1 и запустить свои тесты. Вот что я делаю, чтобы высмеять этот метод —

 with unittest.mock.patch('package1.file1._method_name') as method_name_mock:
 

Это должно создать магический блок для имени метода. Когда я начинаю отладку, он вызывает реальный метод, который мне не нужен.

Я проверяю, был ли макет вызван дважды, что и должно быть, но почему-то это не удается, так как вызывается реальный метод —

 assert method_name_mock.call_count == 2
 

Что я делаю не так?

Комментарии:

1. Вероятно, вы исправляете неправильный объект — это зависит от того, как вы импортируете метод в реальный код. Пожалуйста, проверьте, где можно исправить .

2. а, правильно. Неправильно использовал патч. Спасибо