OK,
So che questo è menzionato nel manual e probabilmente ha a che fare con side_effect
e/o return_value
, ma un semplice esempio diretto mi aiuterà immensamente.Come si simula una classe Python e si ottiene un nuovo oggetto Mock per ogni istanza?
ho:
class ClassToPatch():
def __init__(self, *args):
_do_some_init_stuff()
def some_func():
_do_stuff()
class UUT():
def __init__(self, *args)
resource_1 = ClassToPatch()
resource_2 = ClassToPatch()
Ora, voglio test di unità della classe UUT
, e deridere il ClassToPatch
. Conoscendo la classe UUT
sarà istanziare esattamente due ClassToPatch
oggetti, voglio che il quadro Mock per restituire un nuovo oggetto Mock per ogni esemplificazione, in modo da poter poi far valere le chiamate su ogni separatamente.
Come faccio a ottenere questo utilizzando il @patch
decoratore in un banco di prova? Vale a dire, come risolvere il seguente esempio di codice?
class TestCase1(unittest.TestCase):
@patch('classToPatch.ClassToPatch',autospec=True)
def test_1(self,mock1,mock2):
_assert_stuff()
(Nuovo per Python :) Un modo per modificare questo di lavorare sotto Python 2.7? –
Ho appena eseguito questo codice in Python 2.7.9 (win32) e ha funzionato correttamente. Che errore stai ottenendo? – srgerg
~ $ python --version Python 2.7.5 AttributeError: non ha l'attributo 'ClassToPatch' –