Ответ 1
Есть два способа избавиться от предупреждения, которое я нашел.
Вариант 1. Вы можете отключить предупреждение, поместив "noinspection PyUnresolvedReferences" над вызовом патча:
import mock
from mock import patch
def test_foo():
# noinspection PyUnresolvedReferences
with patch.object(MyObject...):
# do some stuff here...
Это завершает инспектор для вызова и предупреждает об этом. PyCharm до сих пор ничего не знает об этом, но предупреждение ушло.
Я считаю, что Микко Ортамаа прав. PyCharm не понимает, что вы можете добавлять вещи к функциям объектов после определения. Он видит "патч" и смотрит на определение и не находит свойство "объект", поэтому предупреждение.
Вариант 2. Другой способ, который я нашел, чтобы избавиться от предупреждения, - это просто определить его в вашем файле. Назначьте это себе. Как ни странно, это работает для меня, и все предупреждения патча уходят. Ваш пробег может варьироваться в зависимости от того, какие другие проверки вы включили.
import mock
from mock import patch
patch.object = patch.object
def test_foo():
with patch.object(MyObject...):
# do some stuff here
Для меня это то, что работает, потому что я обычно меняю свои классы по-другому, используя такие декораторы:
import mock
from mock import patch
patch.object = patch.object
@patch.object(MyObject, 'methodName')
def test_foo(mockMethod):
# do stuff here
Если я использовал трюк # noinspection PyUnresolvedReferences здесь, он просто отключил эту проверку для всей функции, а не только для декоратора @patch.object... и я не могу этого сделать, потому что мне действительно нравятся эти проверки скажите мне, когда я могу вызвать неразрешенную ссылку.