assert_called
- Python kursu
- İleri seviye
- Ders 23/83
- 5 dk
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) # raisesBu 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
# 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
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ı
from unittest.mock import Mock
m = Mock()
m(5)
m.____(5)
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.