unittest.mock
- Python kursu
- İleri seviye
- Ders 19/83
- 5 dk
unittest.mock.Mock ile sahte nesneleri öğrenirsin.
unittest.mock
unittest.mock, Python'un yerleşik mock (taklit) kütüphanesidir. Gerçek nesnelerin yerine geçen sahte nesneler üretir; böylece testler dış bağımlılıklardan bağımsız çalışır.
En temel sınıf Mock'tür. Mock() ile bir sahte nesne yaratırsın; ona herhangi bir öznitelik ya da metot çağrısı yapılabilir. Varsayılan olarak yine bir Mock döner.
from unittest.mock import Mock
m = Mock()
m.method.return_value = 42
print(m.method()) # 42return_value ile çağrının ne döneceğini belirlersin. Bu, gerçek bir servise gitmeden davranışı taklit etmenin en sade yoludur.
return_value ile davranış
Bir Mock'un çağrıya ne döneceğini return_value ile ayarlarsın. Bu, sabit bir değer, bir fonksiyon ya da başka bir Mock olabilir.
Örnek: m = Mock(); m.return_value = 5. Sonra m() çağrısı 5 döner. Metotlar için m.fetch.return_value = data biçiminde yazarsın; m.fetch() çağrısı data verir.
Birden çok kez çağırırsan her seferinde aynı değer döner. Çağrı sayısını m.call_count ile denetlersin; çağrı argümanlarını m.call_args ile alırsın.
Uygulama Mock ile sahte metot
unittest.mock modülünden Mock içe aktar. m = Mock() ile sahte nesne oluştur; m.fetch.return_value = 42 ayarla. print(m.fetch()) çağrısını yap.
Başlangıç kodu
# unittest.mock içinden Mock içe aktar
# m adında Mock oluştur; fetch metodunun dönüş değeri 42 olsun
# fetch() çağrısının sonucunu yazdırÖrnek çözüm
from unittest.mock import Mock
m = Mock()
m.fetch.return_value = 42
print(m.fetch())Beklenen çıktı
42
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Mock().method() çağrısı varsayılan olarak ne döndürür?
- Hata fırlatır
- None
- Yeni bir Mock nesnesi Doğru cevap
- Çağrılan metot adını
Açıklama: Bir Mock üzerinde yapılan çağrı varsayılan olarak yeni bir Mock döndürür.
2 Mock import et
from unittest.mock import ____
m = Mock()
m.method.return_value = 42
from unittest.mock import Mock
m = Mock()
m.method.return_value = 42
Açıklama: Mock sınıfı unittest.mock modülünden gelir.
3 Mock parçalarını eşleştir
| Kavram | Anlamı |
|---|---|
Mock() |
Sahte nesne |
return_value |
Dönüş değeri |
call_count |
Çağrı sayısı |
call_args |
Çağrı argümanları |