FastAPI Birim Testine Yönelik Nihai Kılavuz: API'nizi Kurşun Geçirmez Hale Getirin

FastAPI uygulamalarını etkili bir şekilde test etmeyi öğrenin. Temel testlerden Apidog gibi araçlarla gelişmiş tekniklere kadar her şey bu kapsamlı kılavuzda. En iyi uygulamalarla API'nizin sağlam ve güvenilir olmasını sağlayın.

Efe Demir

Efe Demir

5 June 2025

FastAPI Birim Testine Yönelik Nihai Kılavuz: API'nizi Kurşun Geçirmez Hale Getirin

Selam geliştiriciler! Bugün, FastAPI ile birim test etme dünyasına dalıyoruz. İster deneyimli bir profesyonel olun, ister FastAPI'ye yeni başlamış olun, bu rehber, API'nizin mümkün olduğunca sağlam olmasını sağlamanıza yardımcı olacaktır. Birim test etmenin temellerinden FastAPI uygulamalarını test etmeye yönelik özel tekniklere kadar her şeyi ele alacağız. Ayrıca, test sürecinizi kolaylaştırabilecek Apidog adlı kullanışlı bir araçtan bahsedeceğiz.

button

Neden Birim Test Etme Önemlidir?

FastAPI'yi birim test etmenin inceliklerine girmeden önce, birim test etmenin neden önemli olduğundan bahsedelim. Basitçe söylemek gerekirse, birim test etme, uygulamanızın her bir parçasının amaçlandığı gibi çalıştığını doğrulamanıza olanak tanır. Tek tek bileşenleri test ederek, hataları erken yakalayabilir ve uygulamanızın doğru davrandığından emin olabilirsiniz.

İşte birim test etmeyi benimsemek için bazı önemli nedenler:

Birim test etmenin önemini anladığımıza göre, FastAPI ile birim test etmenin ayrıntılarına dalalım.

FastAPI Projenizi Kurma

Her şeyden önce, bir FastAPI projenizin kurulu olması gerekir. Henüz yapmadıysanız, şu adımları izleyerek yeni bir FastAPI projesi oluşturabilirsiniz:

FastAPI ve Uvicorn'u Yükleyin: FastAPI web çerçevesidir ve Uvicorn ASGI sunucusudur.

pip install fastapi uvicorn

FastAPI Uygulamanızı Oluşturun: main.py adlı bir dosya oluşturun ve aşağıdaki kodu ekleyin:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}

Uygulamanızı Çalıştırın: Sunucuyu Uvicorn kullanarak başlatın.

uvicorn main:app --reload

FastAPI uygulamanız artık çalışıyor!

Birim Test Etmeye Başlarken

Test Bağımlılıklarını Yükleme

Birim test etmeye başlamak için bir test çerçevesine ihtiyacınız olacak. Kullanımı kolay ve yaygın olarak benimsenen pytest'i kullanmanızı öneririz.

Pytest'i pip kullanarak yükleyin:

pip install pytest

Ayrıca, testler sırasında FastAPI uygulamanıza HTTP istekleri yapmak için httpx'i yükleyin:

pip install httpx

İlk Testinizi Yazma

Kök uç noktamızın beklenen yanıtı döndürdüğünü doğrulamak için basit bir test yazalım. test_main.py adında bir dosya oluşturun ve aşağıdaki kodu ekleyin:

from fastapi.testclient import TestClient
from main import app

client = TestClient(app)

def test_read_root():
    response = client.get("/")
    assert response.status_code == 200
    assert response.json() == {"Hello": "World"}

Bu testte, kök uç noktasına bir GET isteği göndermek ve yanıtın doğru olduğunu doğrulamak için FastAPI'nin TestClient'ını kullanıyoruz. Testi pytest kullanarak çalıştırın:

pytest

Testlerinizi Yapılandırma

Testlerinizi düzenli tutmak için, test dosyalarınız için aşağıdaki yapıyı göz önünde bulundurun:

project/
├── app/
│   ├── main.py
│   └── ... (other application code)
├── tests/
│   ├── __init__.py
│   └── test_main.py

Testlerinizi özel bir tests dizinine yerleştirerek, temiz ve düzenli bir kod tabanını koruyabilirsiniz.

Gelişmiş Birim Test Etme Teknikleri

Parametreli Uç Noktaları Test Etme

FastAPI, uç noktalarınızda parametreleri yönetmeyi kolaylaştırır. Bir parametre alan bir uç nokta ekleyelim ve bunun için bir test yazalım.

main.py dosyanızı yeni bir uç nokta ile güncelleyin:

@app.get("/items/{item_id}")
def read_item(item_id: int):
    return {"item_id": item_id}

Ardından, test_main.py dosyasına bu uç nokta için bir test ekleyin:

def test_read_item():
    item_id = 42
    response = client.get(f"/items/{item_id}")
    assert response.status_code == 200
    assert response.json() == {"item_id": item_id}

Bu test, uç noktanın URL'de geçirilen öğe kimliğini doğru bir şekilde döndürüp döndürmediğini kontrol eder.

Bağımlılık Enjeksiyonunu Test Etme

FastAPI'nin bağımlılık enjeksiyon sistemi güçlü ve esnektir. Bağımlılıkları kullanan uç noktaları nasıl test edebileceğinizi görelim.

main.py dosyasına bir bağımlılık ekleyin:

from fastapi import Depends

def get_query(q: str = None):
    return q

@app.get("/search/")
def search(query: str = Depends(get_query)):
    return {"query": query}

test_main.py dosyasında bu uç nokta için bir test yazın:

def test_search():
    query = "fastapi"
    response = client.get(f"/search/?q={query}")
    assert response.status_code == 200
    assert response.json() == {"query": query}

Burada, bağımlılık enjeksiyonunun sorgu parametresini doğru bir şekilde işleyip işlemediğini test ediyoruz.

Gelişmiş Test İçin Apidog'u Tanıtalım

Apidog Nedir?

Apidog, API testini ve dokümantasyonunu basitleştiren harika bir araçtır. Test sürecinizi otomatikleştirmenize ve kolaylaştırmanıza olanak tanıyarak FastAPI ile sorunsuz bir şekilde entegre olur.

Apidog interface

Testlerinizde Apidog'u Kullanma

Apidog, uç noktalarınızı kolayca belgelemek ve test etmek için dekoratörler sağlar. FastAPI uygulamanızla Apidog'u şu şekilde kullanabilirsiniz.

button

Test Ortamınızı Kurun: Her şeyden önce, test ortamınızı kurun. Bu, test etmek istediğiniz sistemleri ve Apidog'u içerir. Apidog'u açın ve test  Sekmesine geçin

Test tab in Apidog

Test Durumlarınızı Tanımlayın: Ardından, test durumlarınızı tanımlayın. Test etmek istediğiniz farklı senaryoları düşünün ve bunları yazın.

Define Your Test Cases Scenario in Apidog

Testlerinizi Çalıştırın: Şimdi, Apidog'un sihrini yapma zamanı! Testlerinizi çalıştırın ve sonuçları bekleyin.

Run test in Apidog

Sonuçlarınızı Analiz Edin: Testleriniz bittikten sonra, sonuçlarınızı analiz edin. Herhangi bir hata veya beklenmedik davranış arayın.

Analyze the results.

Herhangi bir sorun bulursanız, bunları düzeltin ve testlerinizi tekrar çalıştırın. Sonuçlardan memnun kalana kadar bu işlemi tekrarlayın.

Apidog ile, testlerinizin yalnızca doğru olmasını değil, aynı zamanda iyi belgelenmesini de sağlayabilirsiniz.

FastAPI'yi Birim Test Etme İçin En İyi Uygulamalar

Testleri İzole Tutun

Her testin bağımsız olduğundan ve diğer testlerin durumuna bağlı olmadığından emin olun. Bu izolasyon, testlerin hata ayıklamasını ve bakımını kolaylaştırır.

Fixtures Kullanın

Pytest'teki fixtures, test ortamlarını kurmanıza ve kaldırmanıza yardımcı olabilir. İşte FastAPI uygulamanız için bir örnek fixture:

import pytest
from fastapi.testclient import TestClient
from main import app

@pytest.fixture
def client():
    return TestClient(app)

def test_with_fixture(client):
    response = client.get("/")
    assert response.status_code == 200
    assert response.json() == {"Hello": "World"}

Harici Bağımlılıkları Sahte Yapın

Uç noktalarınız harici hizmetlere veya veritabanlarına bağlı olduğunda, test sırasında bu bağımlılıkları simüle etmek için sahtecilik kullanın. Bu yaklaşım, harici faktörlerden etkilenmeden uygulama mantığınızı test etmeye odaklanmanıza yardımcı olur.

Sonuç

FastAPI uygulamalarını birim test etmek göz korkutucu olmak zorunda değil. Bu kılavuzda özetlenen adımları izleyerek, API'nizin güvenilir, bakımı yapılabilir ve iyi belgelenmiş olmasını sağlayabilirsiniz. Test sürecinizi kolaylaştırmak ve testlerinizi düzenli ve izole tutmak için Apidog gibi araçlar kullanmayı unutmayın.

Şimdi, bu ipuçlarını uygulamaya koyma ve FastAPI uygulamanızı kurşun geçirmez yapma sırası sizde. İyi testler!

Explore more

Fathom-R1-14B: Hindistan'dan Gelişmiş Yapay Zeka Muhakeme Modeli

Fathom-R1-14B: Hindistan'dan Gelişmiş Yapay Zeka Muhakeme Modeli

Yapay zeka hızla gelişiyor. FractalAIResearch/Fathom-R1-14B, 14.8 milyar parametreyle matematik ve genel akıl yürütmede başarılı.

5 June 2025

Mistral Code: İşletmeler için En Özelleştirilebilir Yapay Zeka Destekli Kodlama Asistanı

Mistral Code: İşletmeler için En Özelleştirilebilir Yapay Zeka Destekli Kodlama Asistanı

Mistral Code'u keşfedin: Kurumsal kullanıma özel, en özelleştirilebilir yapay zeka destekli kodlama asistanı.

5 June 2025

Claude Code'un 2025'te Yapay Zeka Kodlamasını Nasıl Dönüştürdüğü

Claude Code'un 2025'te Yapay Zeka Kodlamasını Nasıl Dönüştürdüğü

Claude Code, 2025'te yapay zeka destekli kodlamayı nasıl devrimleştiriyor? Özelliklerini, kullanımını ve Windsurf kısıtlamalarından sonra neden popüler olduğunu öğrenin. Geliştiriciler için okunması gereken!

5 June 2025

API Tasarım-Öncelikli Yaklaşımı Apidog'da Uygulayın

API'leri oluşturmanın ve kullanmanın daha kolay yolunu keşfedin