0Pricing
Python Academy · Ders

İlk pytest Testlerinizi Yazma

Test keşfini, assert deyimlerini ve test yapısını öğrenin.

İlk pytest Testlerinizi Yazma, CoddyKit'te ücretsiz bir Python Academy dersidir. Bu, 4 dersinin 1. 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'i yükleme

pytest'i pip ile yükleyin. Zorunlu bir yapılandırması yoktur — sınamaları otomatik olarak keşfeder.

# pip install pytest

# Run all tests
# pytest

# Run a specific file
# pytest test_math.py

Basit bir sınama işlevi

pytest, test_ ile başlayan tüm işlevleri toplar. Sade assert ifadelerini kullanın — pytest, ayrıntılı çıktı sağlamak için bunları yeniden yazar.

# test_math.py
def add(a, b):
    return a + b

def test_add():
    assert add(2, 3) == 5

def test_add_negative():
    assert add(-1, 1) == 0

Sınama dosyaları ve keşif

pytest, test_*.py veya *_test.py adındaki sınama dosyalarını keşfeder ve test_* adındaki işlevleri veya Test* adındaki sınıfları toplar.

tests/
    test_utils.py
    test_models.py
    conftest.py   # shared fixtures

Sınamaları sınıflarda gruplama

İlişkili sınamaları Test ile başlayan bir sınıfta gruplandırın. unittest.TestCase gerekmez.

class TestCalculator:
    def test_add(self):
        assert 1 + 1 == 2

    def test_multiply(self):
        assert 3 * 4 == 12

Özel durumları sınama

Belirli özel durumların oluşturulduğunu doğrulamak için bağlam yöneticisi olarak pytest.raises kullanın.

import pytest

def divide(a, b):
    if b == 0:
        raise ZeroDivisionError("cannot divide by zero")
    return a / b

def test_divide_by_zero():
    with pytest.raises(ZeroDivisionError, match="cannot divide"):
        divide(10, 0)

-v bayrağı

Her sınamanın adını ve başarılı/başarısız durumunu görmek için pytest'i -v (ayrıntılı) seçeneğiyle çalıştırın.

# pytest -v
# test_math.py::test_add PASSED
# test_math.py::test_add_negative PASSED

# Show print output too:
# pytest -v -s

Sınamaları atlama

Sınamaları koşullu olarak atlamak için @pytest.mark.skip veya @pytest.mark.skipif kullanın.

import pytest, sys

@pytest.mark.skip(reason="not implemented yet")
def test_future_feature():
    assert False

@pytest.mark.skipif(sys.platform == "win32", reason="Unix only")
def test_unix_only():
    assert True

Sınamaları beklenen başarısızlık olarak işaretleme

@pytest.mark.xfail, başarısız olmasını beklediğiniz bir sınamayı işaretler. Sınama başarısız olursa başarılı sayılır, beklenmedik şekilde başarılı olursa uyarı verir.

import pytest

@pytest.mark.xfail(reason="known bug #42")
def test_buggy():
    assert 1 == 2  # will fail, but that's expected

assert yeniden yazımı

pytest, bir başarısızlığa neden olan değerleri göstermek için assert ifadelerini yeniden yazar — bu, yalnızca bir AssertionError göstermekten çok daha yararlıdır.

def test_list_equal():
    result = [1, 2, 4]
    expected = [1, 2, 3]
    assert result == expected
# AssertionError:
#   assert [1, 2, 4] == [1, 2, 3]
#   At index 2 diff: 4 != 3

conftest.py

conftest.py, pytest tarafından otomatik olarak yüklenir. Paylaşılan fikstürleri ve eklentileri burada, açıkça içe aktarmadan kullanabilirsiniz.

# conftest.py
import pytest

@pytest.fixture
def sample_data():
    return {"key": "value"}

# Any test file in the same dir can use sample_data as a parameter

Sınama alt kümelerini çalıştırma

Bir anahtar sözcük ifadesiyle eşleşen sınamaları çalıştırmak için -k kullanın.

# Run tests containing "add"
# pytest -k "add"

# Run tests NOT containing "slow"
# pytest -k "not slow"

# Run a specific test
# pytest test_math.py::test_add

Hızlı kontrol

Bir pytest sınama işlevi adının otomatik olarak keşfedilebilmesi için hangi ön ekle başlaması gerekir?

Özet

pytest, kalıp kodu gerektirmez: dosyaları test_*.py, işlevleri test_* olarak adlandırın ve sade assert kullanın. Özel durumlar için pytest.raises, ayrıntılı çıktı için -v ve paylaşılan fikstürler için conftest.py kullanın.

Sıkça Sorulan Sorular

“İlk pytest Testlerinizi Yazma” dersi ücretsiz mi?

Evet — “İlk pytest Testlerinizi Yazma” 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.

“İlk pytest Testlerinizi Yazma” dersinde ne öğreneceğim?

Test keşfini, assert deyimlerini ve test yapısını öğrenin. 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 1. dersidir.

“İlk pytest Testlerinizi Yazma” 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