Parametreleştirme ve Test Kapsamı
@pytest.mark.parametrize kullanarak testleri birden çok girdiye karşı çalıştırın.
Parametreleştirme ve Test Kapsamı, CoddyKit'te ücretsiz bir Python Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Python Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Python Academy kursu toplamda 4 dersten oluşur.
@pytest.mark.parametrize
@pytest.mark.parametrize kullanarak aynı sınamayı birden çok girdiyle çalıştırın. Her demet ayrı bir sınama durumudur.
import pytest
@pytest.mark.parametrize("a,b,expected", [
(1, 2, 3),
(0, 0, 0),
(-1, 1, 0),
(10, -5, 5),
])
def test_add(a, b, expected):
assert a + b == expectedTek Parametre
Tek bir bağımsız değişken için değer listesini doğrudan aktarın.
import pytest
@pytest.mark.parametrize("n", [1, 2, 3, 4, 5])
def test_positive(n):
assert n > 0Adlandırılmış Sınama Kimlikleri
Her parametre kümesini daha anlaşılır bir çıktı için etiketlemek üzere bir ids listesi sağlayın.
import pytest
@pytest.mark.parametrize("value,result", [
(2, True),
(3, False),
], ids=["even", "odd"])
def test_is_even(value, result):
assert (value % 2 == 0) == resultparametrize Dekoratörlerini Üst Üste Kullanma
Girdilerin Kartezyen çarpımını elde etmek için iki parametrize dekoratörünü üst üste kullanın.
import pytest
@pytest.mark.parametrize("x", [1, 2])
@pytest.mark.parametrize("y", [10, 20])
def test_product(x, y):
assert x * y > 0 # 4 test cases: (1,10),(1,20),(2,10),(2,20)pytest-cov: Yükleme
Kodunuzun hangi satırlarının sınamalar tarafından çalıştırıldığını ölçmek için pytest-cov yükleyin.
# pip install pytest-cov
# Basic usage:
# pytest --cov=mypackage
# HTML report:
# pytest --cov=mypackage --cov-report=htmlKapsama Çıktısını Okuma
Kapsama, sınama sırasında hangi satırlara, dallara veya ifadelere erişilmediğini gösterir.
# Name Stmts Miss Cover
# ------- ----- ---- -----
# mypackage/utils.py 20 3 85%
#
# Missing: lines 45, 67, 88Dal Kapsaması
Koşullu ifadelerin her iki dalının da sınanıp sınanmadığını izlemek için --cov-branch kullanın.
# pytest --cov=mypackage --cov-branch
def is_positive(n):
if n > 0: # branch 1: True
return True
return False # branch 2: FalseDüşük Kapsamada Derlemeyi Başarısız Kılma
Kapsama N yüzdesinin altına düşerse derlemeyi başarısız kılmak için --cov-fail-under=N kullanın.
# pytest --cov=mypackage --cov-fail-under=80
# FAIL Required test coverage of 80% not reached. Total: 72%.coveragerc Yapılandırması
Şablon kodunu atlamak için kapsam dışı bırakmaları .coveragerc dosyasında yapılandırın.
# .coveragerc
[run]
omit =
*/migrations/*
*/tests/*
setup.py
[report]
exclude_lines =
pragma: no cover
if TYPE_CHECKING:İyi Kapsama Ne Anlama Gelir
Yüksek kapsama, sınamaların doğru olduğunu garanti etmez. Yalnızca satırların çalıştırılmasına değil, anlamlı doğrulamalara odaklanın. Çoğu proje için %80-90 pratik bir hedeftir.
# A covered but useless test:
def test_nothing():
is_positive(5) # no assert — 100% coverage, zero confidence
# A meaningful test:
def test_positive():
assert is_positive(5) is True
assert is_positive(-1) is Falseparametrize ve Kapsamayı Birleştirme
Parametreli sınamalar, tek bir sınama tanımıyla birden çok kod yolunu çalıştırarak kapsama oranını doğal olarak artırır.
import pytest
@pytest.mark.parametrize("n,expected", [
(5, True), (-1, False), (0, False)
])
def test_is_positive(n, expected):
assert is_positive(n) == expectedHızlı Kontrol
Bir pytest çalıştırmasında --cov-fail-under=90 ne yapar?
Özet
Birden çok girdiyi düzenli biçimde sınamak için @pytest.mark.parametrize kullanın. Kod kapsamını pytest-cov ile ölçün, dalları --cov-branch ile izleyin ve en düşük değerleri --cov-fail-under ile zorunlu kılın.
Sıkça Sorulan Sorular
“Parametreleştirme ve Test Kapsamı” dersi ücretsiz mi?
Evet — “Parametreleştirme ve Test Kapsamı” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Python Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Python Academy kursu toplamda 4 dersten oluşur.
“Parametreleştirme ve Test Kapsamı” dersinde ne öğreneceğim?
@pytest.mark.parametrize kullanarak testleri birden çok girdiye karşı çalıştırın. Python Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Python Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Python Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Parametreleştirme ve Test Kapsamı” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Python Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Python Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- İlk pytest Testlerinizi Yazma
- Fixture'lar ve Kurulum/Kapatma
- Parametreleştirme ve Test Kapsamı
- unittest.mock ile Sahte Nesne Kullanımı