Zbuduj i przetestuj narzędzie

Tworzenie oprogramowania z Claude Code

Dani Zysman

AI Curriculum Manager @ DataCamp

Od planu do kodu

recraft: half: Deweloper przy biurku piszący narzędzie CLI, terminal pokazuje wynik argparse

  • Nasza specyfikacja z lekcji 4.1:
    • --artist — nazwa artysty do wyszukania
    • --format — format wyjściowy JSON lub CSV
    • --output — ścieżka pliku na wyniki
  • Claude wygeneruje:
    • parsowanie argumentów za pomocą argparse
    • zapytanie do bazy danych przez MCP
    • logikę zapisu do pliku
Tworzenie oprogramowania z Claude Code

Wzorce argumentów CLI

Wzorzec Przykład Kiedy stosować
Wymagany --artist "AC/DC" Musi zostać podany
Opcjonalny --format json Ma sensowną wartość domyślną
Flaga --verbose Wartość logiczna wł./wył.
Pozycyjny reporter.py data.csv Główne dane wejściowe
  • Dobre praktyki:
    • dodaj opisy --help dla każdego argumentu
    • używaj wartości domyślnych, by ograniczyć wymagane dane wejściowe
    • waliduj wcześnie, zgłaszaj błędy od razu z jasnym komunikatem
Tworzenie oprogramowania z Claude Code

Tworzenie reportera

> 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
Tworzenie oprogramowania z Claude Code

Wygenerowany 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)
Tworzenie oprogramowania z Claude Code

Przetestuj narzędzie

flowchart: reporter.py, pytest, Weryfikacja wyniku

  • Testy sprawdzają:
    • czy prawidłowy artysta zwraca dane
    • czy plik wyjściowy zostaje utworzony
    • czy format JSON/CSV jest poprawny
Tworzenie oprogramowania z Claude Code

Testowanie narzędzi CLI

  • Testy jednostkowe
    • testują pojedyncze funkcje
    • mockują wywołania bazy danych
    • szybkie, izolowane, powtarzalne
  • Testy integracyjne
    • uruchamiają rzeczywiste polecenie CLI
    • korzystają z prawdziwej bazy danych
    • wolniejsze, ale bardziej realistyczne
  • Co testować:
    • scenariusz podstawowy — poprawny artysta, właściwy wynik
    • przypadki błędów — artysta nieznaleziony, zły format
    • przypadki brzegowe — pusta nazwa, znaki specjalne
    • obsługa plików — uprawnienia zapisu, nadpisywanie
Tworzenie oprogramowania z Claude Code

Testy w akcji

> 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!
Tworzenie oprogramowania z Claude Code

Czas na praktykę!

Tworzenie oprogramowania z Claude Code

Preparing Video For Download...