Aracı Oluştur ve Test Et

Claude Code ile Yazılım Geliştirme

Dani Zysman

AI Curriculum Manager @ DataCamp

Plandan Koda

recraft: half: Bir geliştirici, terminalde argparse çıktısı görünen bir CLI aracı kodluyor

  • Ders 4.1'den belirtimimiz:
    • --artist — sorgulanacak sanatçı adı
    • --format — JSON veya CSV çıktı
    • --output — sonuç dosya yolu
  • Claude şunları üretecek:
    • argparse argüman ayrıştırma
    • MCP ile veritabanı sorgusu
    • Dosya çıktı mantığı
Claude Code ile Yazılım Geliştirme

CLI Argüman Kalıpları

Desen Örnek Ne Zaman Kullanılır
Zorunlu --artist "AC/DC" Sağlanmalı
İsteğe bağlı --format json Mantıklı varsayılanı var
Bayrak --verbose Boolean açık/kapalı
Konumsal reporter.py data.csv Birincil girdi
  • En iyi uygulamalar:
    • Her argüman için --help açıklaması ekle
    • Girdileri azaltmak için varsayılanlar kullan
    • Erken doğrula; net mesajlarla hızlı hata ver
Claude Code ile Yazılım Geliştirme

Reporter'ı Oluşturma

> Use @PLAN.md to build reporter.py
Done! Created reporter.py following PLAN.md

Core functions:
- get_db_connection()     Read-only SQLite with validation
- fetch_artist_stats()    4 SQL queries for aggregates
- format_json/csv()       Output formatting
- write_output()          File writing
- parse_args() / main()   CLI orchestration

Features:
- Case-insensitive artist lookup
- Per-album breakdown with revenue
- All error messages as specified
- --db flag for test injection
Claude Code ile Yazılım Geliştirme

Oluşturulan Kod

import argparse, sqlite3, json, csv

def main():
    parser = argparse.ArgumentParser()
    ...
    args = parser.parse_args()

    conn = sqlite3.connect("chinook.db")
    # Query artist's albums and tracks...

    if args.format == "json":
        with open(args.output, "w") as f:
            json.dump(data, f, indent=2)
Claude Code ile Yazılım Geliştirme

Aracı Test Et

akış şeması: reporter.py, pytest, Çıktıyı Doğrula

  • Testler şunları doğrular:
    • Geçerli sanatçı veri döndürür
    • Çıktı dosyası oluşturulur
    • JSON/CSV biçimi doğru
Claude Code ile Yazılım Geliştirme

CLI Araçlarını Test Etme

  • Birim Testleri
    • Tekil fonksiyonları test et
    • Veritabanı çağrılarını mock'la
    • Hızlı, yalıtılmış, tekrarlanabilir
  • Entegrasyon Testleri
    • Gerçek CLI komutunu çalıştır
    • Gerçek veritabanı kullan
    • Daha yavaş ama daha gerçekçi
  • Ne test edilmeli:
    • Mutlu yol — geçerli sanatçı, doğru çıktı
    • Hata durumları — sanatçı yok, kötü biçim
    • Köşe durumları — boş ad, özel karakterler
    • Dosya işlemleri — yazma izinleri, üzerine yazma
Claude Code ile Yazılım Geliştirme

Testlerin İş Başında Hali

> Use @PLAN.md to build test_reporter.py
Created test_reporter.py: 31 tests across 7 classes

Coverage:
- Connection     Valid DB, missing file, invalid file
- Stats          Known/unknown artist, case-insensitive, multi-genre
- JSON           Format, indentation, round-trip serialization
- CSV            Two sections, pipe-delimited genres, row counts
- File I/O       Write, overwrite, unwritable path
- CLI args       Required args, choices validation
- Integration    JSON/CSV output, artist/DB not found, cleanup

Uses minimal seeded SQLite DB: independent of chinook.db

All 31 tests passing!
Claude Code ile Yazılım Geliştirme

Hadi pratik yapalım!

Claude Code ile Yazılım Geliştirme

Preparing Video For Download...