Study
Flask

Testing dengan test_client

Penjelasan

Flask menyediakan app.test_client() yang mensimulasikan HTTP request ke aplikasi tanpa perlu menjalankan server sungguhan — cocok dipasangkan dengan pytest atau unittest. Test client punya method seperti .get(path) dan .post(path, data=...) yang mengembalikan object response berisi .status_code, .data (bytes), dan .get_json() untuk API. Idealnya test dijalankan dengan konfigurasi TESTING=True dan database terpisah (misalnya SQLite in-memory) supaya tidak menyentuh data production.

Contoh Konsep

# pip install pytest
import pytest
from app import create_app

@pytest.fixture
def client():
    app = create_app(config_class='TestingConfig')
    app.config['TESTING'] = True
    with app.test_client() as client:
        yield client

def test_halaman_utama(client):
    response = client.get('/')
    assert response.status_code == 200
    assert b'Halo' in response.data

def test_api_produk(client):
    response = client.post('/api/produk', json={'nama': 'Mouse'})
    assert response.status_code == 201
    data = response.get_json()
    assert data['nama'] == 'Mouse'

# jalankan: pytest

Praktikum

Lengkapi test untuk memastikan route '/produk/999' (tidak ada) mengembalikan status 404.

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Pisahkan test unit (logika murni Python, tanpa Flask) dari test integrasi (lewat test_client) — test unit jauh lebih cepat dan sebaiknya jadi mayoritas test suite kamu.