9
Używam biblioteki Python mock
. Wiem jak mock metodę instancji klasy postępując zgodnie z document:Python mock instancja klasy zmiennej
>>> def some_function():
... instance = module.Foo()
... return instance.method()
...
>>> with patch('module.Foo') as mock:
... instance = mock.return_value
... instance.method.return_value = 'the result'
... result = some_function()
... assert result == 'the result'
jednak próbował szydzić zmienną instancji klasy, ale nie działa (instance.labels
w poniższym przykładzie):
>>> with patch('module.Foo') as mock:
... instance = mock.return_value
... instance.method.return_value = 'the result'
... instance.labels = [1, 1, 2, 2]
... result = some_function()
... assert result == 'the result'
Zasadniczo chcę instance.labels
pod some_function
uzyskać żądaną wartość. Jakieś wskazówki?
To nie działa. Otrzymałem taki sam wynik jak 'instance.labels = [1, 1, 2, 2]', która jest tą wyśmiewaną zmienną, która nie została użyta przez 'some_function'. W dokumentacji jest to metoda szydercza zamiast zmiennej. – clwen
Zaktualizowałem moją odpowiedź. Teraz jestem zagubiony, ponieważ twój kod działa. – twil
W moim kodzie "etykiety" pojawiają się dopiero po wywołaniu jakiejś funkcji. Ta funkcja jest wywoływana w ramach funkcji, którą chcę przetestować. Może to jest powód. Kończę się wyśmiewać inicjalizacji klasy, aby zwrócić obiekt fałszywy z zachowaniem, które chcę. – clwen