Ci sono 2 modi per eliminare l'avviso che ho trovato.
Opzione 1. È possibile effettuare l'avvertimento andare via, mettendo "# noinspection PyUnresolvedReferences" sopra la chiamata patch:
import mock
from mock import patch
def test_foo():
# noinspection PyUnresolvedReferences
with patch.object(MyObject...):
# do some stuff here...
Questa quiets l'ispettore per la chiamata e fa l'avvertimento andare via. PyCharm ancora non ne sa nulla, ma l'avviso è andato via.
Credo che Mikko Ohtamaa sia corretto. PyCharm non capisce che è possibile aggiungere cose agli oggetti funzione dopo la definizione. Vede "patch" e guarda la definizione e non trova una proprietà "oggetto", quindi l'avviso.
Opzione 2. L'altro modo in cui ho trovato di eliminare l'avviso è definirlo nel file. Assegnalo a se stesso. Stranamente, questo funziona per me e tutti gli avvisi di patch vanno via. Il tuo chilometraggio può variare a seconda di quali altre ispezioni hai attivato.
import mock
from mock import patch
patch.object = patch.object
def test_foo():
with patch.object(MyObject...):
# do some stuff here
Per me questo è ciò che funziona perché io di solito Patch mie classi un modo diverso, utilizzando decoratori in questo modo:
import mock
from mock import patch
patch.object = patch.object
@patch.object(MyObject, 'methodName')
def test_foo(mockMethod):
# do stuff here
Se ho usato le PyUnresolvedReferences # noinspection trucco, semplicemente disabilitato questa ispezione per l'intera funzione, non solo per il decoratore @ patch.object ... e non posso averlo perché mi piacerebbe davvero che quelle ispezioni mi dicessero quando potrei chiamare un riferimento non risolto.
fonte
2015-05-04 06:36:38
Potrebbe essere che PyCharm non capisca che è possibile aggiungere cose agli oggetti funzione poiché questo è un modo molto insolito di fare le cose? –