CodeBlanks Logo Icon CodeBlanks

unittest.mock

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())  # 42

return_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

main.py
# 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

main.py
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

Soru
from unittest.mock import ____

m = Mock()
m.method.return_value = 42
Cevap
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ı

İleri seviye bölümündeki tüm dersler