# Test Fixture

Adres: https://softwaredictionary.org/tr/terimler/test-fixture
Kategori: Test ve Kalite
Son güncelleme: 2026-09-30
Okunuşu: test fiksçır

Kısaca: Test fixture, bir testin çalışmadan önce ihtiyaç duyduğu örnek veri ya da yapılandırılmış nesne gibi bilinen durum ile onu kurup temizleyen koddur.

## Test fixture nedir?

Test fixture, bir testin çalışabilmesi için önceden yerinde olması gereken her şeydir ve her seferinde tam olarak aynı şekilde hazırlanır. Bir veritabanındaki birkaç örnek kayıt, girdi dosyaları içeren geçici bir klasör, yapılandırılmış bir nesne ya da çalışan bir test sunucusu olabilir. Her çalıştırma aynı bilinen başlangıç noktasından başladığı için testin sonucu yalnızca test edilen koda bağlıdır.

Çoğu çerçeve bir fixture'ın ömrünü ikiye ayırır: durumu oluşturan kurulum (setup) ve test başarısız olsa bile durumu temizleyen sökme (teardown). Bazı çerçeveler `setUp` ve `tearDown` gibi metotlar ya da `beforeEach` ve `afterEach` gibi hook'lar kullanır; pytest ise adını bir parametre olarak yazan her teste verilen fixture fonksiyonları kullanır. Fixture'lar her test için, her dosya için ya da tüm çalıştırma için bir kez oluşturulabilir: bir veritabanı konteyneri gibi pahalı bir fixture'ı paylaşmak zaman kazandırır, ancak testlerin değiştirdiği paylaşılan veri testleri birbirine bağımlı kılıp kararsız hâle getirebilir.

Fixture, her gösteriden önce aynı biçimde düzenlenen bir tiyatro sahnesi gibidir; böylece oyuncular her eşyanın aynı yerde olduğuna güvenebilir. Fixture'lar birim testlerinde (hazırlanmış bir nesne), entegrasyon testlerinde (başlangıç verisi yüklenmiş bir veritabanı) ve uçtan uca testlerde (oturum açmış bir kullanıcı hesabı) görülür. Sözcük, test kayıtlarıyla dolu JSON ya da SQL dosyaları gibi statik örnek veri dosyaları için de kullanılır.

Test fixture'ları sıklıkla mock'larla karıştırılır. Fixture, testin içinde çalıştığı dünyayı hazırlar; mock ise test edilen kodun çağırdığı bir bağımlılığın sahte vekilidir. Bir fixture bir mock oluşturup teslim edebilir, ancak pek çok fixture bellek içi bir veritabanı ya da geçici bir dosya gibi gerçek şeylerdir.

## Önemli noktalar

- Fixture, bir testin dayandığı bilinen başlangıç durumudur.
- Kurulum durumu oluşturur, sökme ise sonrasında temizler.
- Fixture'ların kapsamı test başına, dosya başına ya da test çalıştırması başına olabilir.
- Testlerin değiştirdiği paylaşılan fixture'lar, flaky testlerin yaygın bir nedenidir.
- Fixture ortamı hazırlar; mock bir bağımlılığın yerini alır.

## Örnek: Kurulum ve sökme içeren bir pytest fixture'ı

```python
import sqlite3
import pytest

@pytest.fixture
def db():
    # Setup: a fresh in-memory database with known data for every test
    conn = sqlite3.connect(":memory:")
    conn.execute("CREATE TABLE users (name TEXT)")
    conn.execute("INSERT INTO users VALUES ('Ada'), ('Grace')")
    yield conn  # the test runs here
    conn.close()  # Teardown: runs even if the test fails

def test_counts_users(db):
    assert db.execute("SELECT COUNT(*) FROM users").fetchone() == (2,)
```

## Sık sorulan sorular

**Fixture ile mock arasındaki fark nedir?**

Fixture, bir testin ihtiyaç duyduğu durumu ya da kaynakları, örneğin veriyi ya da geçici bir dosyayı hazırlar. Mock ise kodun çağırdığı bir bağımlılığın sahte sürümüdür ve nasıl kullanıldığını da kaydedebilir.

**Testlerde setup ve teardown nedir?**

Setup, bir testin fixture'ını çalışmadan önce hazırlayan kod, teardown ise sonrasında kaldıran ya da sıfırlayan koddur. İkisi birlikte her testi kendisinden önce çalışanlardan bağımsız tutar.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
