Я хочу написать тест для этой функции, высмеивая check_call
(я не хочу, чтобы она вызывалась):
from subprocess import check_call
def foo_method():
check_call(["ls"])
print("hello")
Это тест:
import unittest.mock
from scripts import foo_method
@unittest.mock.patch("subprocess.check_call")
def test_foo_method(subprocess_check_call):
foo_method()
Но функция check_call
вызывается всегда и не издевается. Что не так с тестом?
check_call
, импортированный в ваш модуль, например.patch("mymodule.check_call")
- см. где исправить, или, например, этот ответ дал на аналогичный вопрос. - person MrBean Bremen   schedule 06.01.2021foo_method
используетscripts.check_call
, а неsubprocess.check_call
. Оба имени относятся к одному и тому же базовому объекту, ноpatch
оперирует именами, а не вещами, на которые они ссылаются. - person chepner   schedule 07.01.2021