CodeBlanks Logo Icon CodeBlanks

assert_called

assert_called_with ile çağrı doğrulamayı öğrenirsin.

assert_called

Bir Mock'un çağrılıp çağrılmadığını denetlemek için assert_called ailesini kullanırsın. En temel olanı assert_called(): en az bir kez çağrıldıysa sessizce geçer; çağrılmadıysa AssertionError fırlatır.

Daha sıkı denetimler: assert_called_once() tam bir kez; assert_called_with(arg) belirli argümanla; assert_called_once_with(arg) tam bir kez ve belirli argümanla.

m = Mock()
m(5)
m.assert_called_with(5)  # passes
m.assert_called_with(6)  # raises

Bu denetimler, taklit edilen fonksiyonun doğru argümanla çağrıldığını doğrular; sahte nesne davranışını testlerin sonunda denetler.

Çağrı argümanları ve sırasyon

Bir Mock'un çağrı geçmişini call_args_list ile alabilirsin. Her öğe, bir çağrının konumsal ve anahtar sözcük argümanlarını tutan bir demettir.

Bu, çağrı sırasını ve her çağrının argümanlarını denetlemek için kullanışlıdır. Örneğin bir fonksiyon önce (5,) sonra (6,) ile çağrıldıysa call_args_list bunları listeler.

Bu yapı, basit assert_called_with'in yetersiz kaldığı çoklu çağrı senaryolarında işe yarar.

Uygulama assert_called_with ile denetim

unittest.mock modülünden Mock içe aktar. m = Mock() oluştur; m("Ayşe") çağrısı yap. m.assert_called_with("Ayşe") denetimini ekle. Son olarak print("ok") yaz.

Başlangıç kodu

main.py
# unittest.mock içinden Mock içe aktar
# m adında Mock oluştur; "Ayşe" argümanıyla çağır
# assert_called_with("Ayşe") ile denetle
# "ok" yazdır

Örnek çözüm

main.py
from unittest.mock import Mock

m = Mock()
m("Ayşe")
m.assert_called_with("Ayşe")
print("ok")

Beklenen çıktı

ok

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Doğrulama metotlarını eşleştir

Kavram Anlamı
assert_called() En az bir kez
assert_called_once() Tam bir kez
assert_called_with(x) Belirli argümanla
assert_called_once_with(x) Tam bir kez ve belirli

2 assert_called_once() ne zaman hata fırlatır?

  • Mock hiç çağrılmadıysa
  • Mock birden çok kez çağrıldıysa
  • Hem hiç çağrılmadıysa hem birden çok kez çağrıldıysa Doğru cevap
  • Mock bir kez çağrıldıysa

Açıklama: assert_called_once() tam bir kez çağrılmayı bekler; başka durumda hata verir.

3 assert_called_with çağrısı

Soru
from unittest.mock import Mock

m = Mock()
m(5)
m.____(5)
Cevap
from unittest.mock import Mock

m = Mock()
m(5)
m.assert_called_with(5)

Açıklama: m.assert_called_with(5), Mock'un 5 ile çağrıldığını denetler.

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