0Pricing
Python Academy · Ders

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 == expected

Tek 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 > 0

Adlandı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) == result

parametrize 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=html

Kapsama Çı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, 88

Dal 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: False

Düşü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 False

parametrize 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) == expected

Hı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

  1. İlk pytest Testlerinizi Yazma
  2. Fixture'lar ve Kurulum/Kapatma
  3. Parametreleştirme ve Test Kapsamı
  4. unittest.mock ile Sahte Nesne Kullanımı
← Python Academy Sayfasına Dön