Python
parametrize
@pytest.mark.parametrize ile parametreli testleri öğrenirsin.
parametrize
@pytest.mark.parametrize, aynı testi farklı verilerle çalıştırır. Tek bir test fonksiyonu, birden çok giriş için otomatik yinelenir.
import pytest
@pytest.mark.parametrize("a,b,expected", [
(1, 2, 3),
(10, 5, 15),
(-1, 1, 0),
])
def test_add(a, b, expected):
assert add(a, b) == expected
Bu biçimde her üçlü için ayrı bir test çalışır. Herhangi biri başarısız olursa pytest hangi verinin hataya yol açtığını gösterir. Veri güdümlü (data-driven) test için idealdir.
Veri güdümlü test
parametrize ile çok sayıda üç durumu tek bir testte toplarsın. Her satır bir test verisi; ilk dize parametre adlarını, liste ise veri demetlerini içerir.
Örnek: "n,expected" adlarıyla [(0, 0), (1, 1), (5, 25)] verirsen, test üç kez çalışır; her seferinde n ve expected değerleri bağlanır.
Bu yaklaşım, tekrarlanan test fonksiyonları yazmaktan kurtarır; tek bir hata tüm veriyi gösterir.
Uygulama parametrize ile square testi
square(n) fonksiyonu n * n döndürsün. test_square fonksiyonunu @pytest.mark.parametrize ile süsle; ilk dize "n,expected", ikinci argüman [(2, 4), (3, 9), (4, 16)]. Test gövdesi assert square(n) == expected içersin. Dosya sonunda test_square'ı tek tek verilerle çağır: test_square(2, 4); test_square(3, 9); print("ok").
Örnek çözümü göster
import pytest
def square(n):
return n * n
@pytest.mark.parametrize("n,expected", [(2, 4), (3, 9), (4, 16)])
def test_square(n, expected):
assert square(n) == expected
test_square(2, 4)
test_square(3, 9)
print("ok")
Kendini test et
-
parametrize decorator'ünü ekle
import pytest
@____("a,b,expected", [(1, 2, 3), (10, 5, 15)])
def test_add(a, b, expected):
assert add(a, b) == expected
Cevabı göster
import pytest
@pytest.mark.parametrize("a,b,expected", [(1, 2, 3), (10, 5, 15)])
def test_add(a, b, expected):
assert add(a, b) == expected
-
parametrize parçalarını eşleştir
- "a,b,expected"
- Parametre adları
- (1, 2, 3)
- Bir test verisi
- @pytest.mark.parametrize
- Testi yineler
- def test_add(a, b, expected)
- Test imzası
-
parametrize'in ilk dize argümanı neyi belirtir?
- Test fonksiyonunun adını
- Beklenen çıktıyı
- Modül adını
- Parametre adlarını (virgülle ayrılmış)
Cevabı göster
Parametre adlarını (virgülle ayrılmış) — İlk dize parametre adlarını listeler; veri demetleri bu sırayla bağlanır.
Sıradaki ders: monkeypatch