0Pricing
FastAPI Backend Development Bootcamp · Ders

Pytest ile Birim Sınamaları

Pytest çatısını kullanarak FastAPI işlevleriniz ve modülleriniz için etkili birim sınamaları yazın.

Pytest ile Birim Sınamaları, CoddyKit'te ücretsiz bir FastAPI Backend Development Bootcamp 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, FastAPI Backend Development Bootcamp öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. FastAPI Backend Development Bootcamp kursu toplamda 4 dersten oluşur.

What is Unit Testing?

Birim testine hoş geldiniz! Bu, yazılım geliştirmede kodunuzun doğru çalıştığından emin olmanıza yardımcı olan temel bir uygulamadır.

  • Birim testi, bir uygulamanın 'birim' adı verilen en küçük test edilebilir parçalarını test etmeye odaklanır.
  • Bir 'birim'; bir fonksiyon, bir metot veya bir sınıf olabilir. Amaç, onu izole etmek ve beklendiği gibi davrandığını doğrulamaktır.
  • Bu, hataları erkenden yakalamaya yardımcı olur, kodun yeniden düzenlenmesini kolaylaştırır ve uygulamanızın güvenilirliğine olan inancı artırır.

Introducing Pytest

Python için en popüler ve güçlü test çatılarından biri Pytest'tir. Sadeligi ve esnekliği ile bilinir.

  • Pytest, basit ancak ölçeklenebilir testler yazmayı kolaylaştırır.
  • Testleri otomatik olarak keşfeder, ayrıntılı hata raporları sunar ve fixture'lar gibi gelişmiş özellikleri destekler.
  • Pytest'i FastAPI projeleri de dahil olmak üzere Python topluluğunda yaygın olarak kullanıldığını göreceksiniz.

Installing Pytest

İlk testimizi yazmadan önce Pytest'i kurmamız gerekiyor. Bu, standart bir Python paketidir.

Terminalinizi veya komut isteminizi açın ve aşağıdaki komutu çalıştırın:

pip install pytest

Your First Function to Test

Test etmek istediğimiz basit bir Python fonksiyonu oluşturalım. Bunu utils.py adlı bir dosyaya koyacağız.

Bu fonksiyon sadece iki sayıyı çarpar. Her zaman doğru sonucu döndürdüğünden emin olmak için testler yazacağız.

def multiply(x, y):
    return x * y

if __name__ == "__main__":
    # This part shows how to use the function directly
    print(f"5 * 3 = {multiply(5, 3)}")
    print(f"10 * 0 = {multiply(10, 0)}")

Crafting Your First Test

Şimdi multiply fonksiyonumuz için testler yazalım. Pytest, test_ ile başlayan (örneğin test_utils.py) test dosyalarını ve bu dosyaların içinde yine test_ ile başlayan test fonksiyonlarını otomatik olarak keşfeder.

utils.py ile aynı dizinde test_utils.py adında yeni bir dosya oluşturun:

from utils import multiply # Import the function to test

def test_multiply_positive_numbers():
    # Check if 2 * 3 equals 6
    assert multiply(2, 3) == 6

def test_multiply_by_zero():
    # Check if any number multiplied by zero is zero
    assert multiply(5, 0) == 0

def test_multiply_negative_numbers():
    # Check multiplication with a negative number
    assert multiply(-2, 4) == -8

Executing Your Tests

utils.py ve test_utils.py dosyalarını aynı klasöre kaydettiğinize göre, artık testlerinizi çalıştırabilirsiniz!

Terminalinizi bu dizinde açın ve sadece pytest yazın. Pytest, tüm testleri bulacak ve çalıştıracaktır.

# In your terminal or command prompt:
pytest

Understanding Assertions

Her testin özü assert ifadesidir. Bir koşulun doğru olduğunu bu şekilde doğrularsınız. Eğer bir assert ifadesi başarısız olursa, Pytest testi başarısız olarak işaretler.

İşte assert kullanımına dair bazı yaygın yöntemler:

  • assert actual == expected: İki değerin eşit olup olmadığını kontrol eder.
  • assert actual != unexpected: İki değerin eşit olmadığını kontrol eder.
  • assert item in collection: Bir öğenin liste, küme veya dizge içinde var olup olmadığını kontrol eder.
  • assert not condition: Bir koşulun yanlış olduğunu kontrol eder.
  • assert value > 0: Sayısal karşılaştırmalar için kullanılır.

Reusable Test Setup with Fixtures

Bazen birden fazla testin aynı kuruluma (örneğin geçici bir dosya, yapılandırılmış bir nesne) ihtiyacı olur. Pytest fikstürleri, yeniden kullanılabilir kurulum ve temizleme mantığı tanımlamanın bir yolunu sağlar.

Fikstür, @pytest.fixture ile dekore edilmiş bir fonksiyondur. Testler, fikstürü bir argüman olarak adlandırarak talep edebilirler.

import pytest

@pytest.fixture
def sample_data():
    # This fixture provides a list of numbers for tests
    print("\nSetting up sample_data") # Runs before tests
    yield [10, 20, 30]
    print("\nTeardown sample_data") # Runs after tests

def test_data_length(sample_data):
    assert len(sample_data) == 3

def test_data_contains_value(sample_data):
    assert 20 in sample_data

Handling Expected Errors

Peki ya fonksiyonunuzun belirli koşullar altında bir hata döndürmesi gerekiyorsa? Pytest, pytest.raises kullanarak bunu da test edebilir.

Bu, belirli bir istisnanın yükseltildiğini doğrulayarak hata yönetimi mantığınızın doğru çalıştığından emin olmanızı sağlar.

# my_processor.py
def divide(a, b):
    if b == 0:
        raise ValueError("Cannot divide by zero!")
    return a / b

# test_my_processor.py
import pytest
from my_processor import divide

def test_divide_by_zero_raises_error():
    with pytest.raises(ValueError, match="Cannot divide by zero!"):
        divide(10, 0)

def test_divide_positive_numbers():
    assert divide(10, 2) == 5.0

Pytest Fundamentals Check

Aşağıdaki Python fonksiyonunu ve Pytest testini göz önünde bulundurun:

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

# test_calculator.py
from calculator import add

def test_add_positive():
    assert add(5, 3) == 8

def test_add_negative_numbers():
    assert add(-2, -4) == -6

def test_add_mixed_numbers():
    assert add(10, -5) == 5

Terminalde pytest komutunu çalıştırırsanız sonuç ne olur?

Unit Testing Recap

Harika bir iş çıkardın! Pytest ile birim testinin temellerini öğrendin. Bu, sağlam uygulamalar oluşturmak için çok önemli bir beceridir.

  • Birim testleri, kodunuzun küçük ve bağımsız parçalarını doğrular.
  • Pytest, bu testleri yazmak ve çalıştırmak için güçlü ve kullanımı kolay bir çerçevedir.
  • Beklenen sonuçları kontrol etmek için assert ifadelerini kullanırsınız.
  • Fixtures, testleriniz için yeniden kullanılabilir veriler veya kaynaklar oluşturmanıza yardımcı olur.
  • pytest.raises, kodunuzun belirli istisnaları doğru bir şekilde yükselttiğini test etmek için kullanılır.

Bir sonraki adımda, FastAPI uç noktalarınız için özel olarak entegrasyon testlerinin nasıl gerçekleştirileceğini keşfedeceğiz!

Sıkça Sorulan Sorular

“Pytest ile Birim Sınamaları” dersi ücretsiz mi?

Evet — “Pytest ile Birim Sınamaları” 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 FastAPI Backend Development Bootcamp kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. FastAPI Backend Development Bootcamp kursu toplamda 4 dersten oluşur.

“Pytest ile Birim Sınamaları” dersinde ne öğreneceğim?

Pytest çatısını kullanarak FastAPI işlevleriniz ve modülleriniz için etkili birim sınamaları yazın. FastAPI Backend Development Bootcamp 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.

FastAPI Backend Development Bootcamp öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te FastAPI Backend Development Bootcamp, 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.

“Pytest ile Birim Sınamaları” 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 FastAPI Backend Development Bootcamp dersinde kod yazıp çalıştırabilir miyim?

Evet. Her FastAPI Backend Development Bootcamp 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. Pytest ile Birim Sınamaları
  2. FastAPI Uç Noktalarını Tümleştirme Sınaması
  3. FastAPI Uygulamalarında Hata Ayıklama
  4. FastAPI Testlerinde Bağımlılıkları Taklit Etme
← FastAPI Backend Development Bootcamp Sayfasına Dön