Bouw en test de tool

Softwareontwikkeling met Claude Code

Dani Zysman

AI Curriculum Manager @ DataCamp

Van plan naar code

recraft: half: Ontwikkelaar aan bureau die een CLI-tool codeert met terminal die argparse-uitvoer toont

  • Onze specificatie uit Les 4.1:
    • --artist — artiestnaam om op te zoeken
    • --format — JSON- of CSV-uitvoer
    • --output — bestandspad voor resultaten
  • Claude genereert:
    • argparse-argumentparsing
    • Databasequery via MCP
    • Logica voor bestandsuitvoer
Softwareontwikkeling met Claude Code

CLI-argumentpatronen

Patroon Voorbeeld Wanneer gebruiken
Verplicht --artist "AC/DC" Moet worden meegegeven
Optioneel --format json Heeft een zinvolle default
Vlag --verbose Booleaanse aan/uit
Positioneel reporter.py data.csv Primaire input
  • Best practices:
    • Voeg --help-beschrijvingen toe voor elk argument
    • Gebruik defaults om benodigde invoer te beperken
    • Valideer vroeg, faal snel met duidelijke meldingen
Softwareontwikkeling met Claude Code

De reporter bouwen

> Use @PLAN.md to build reporter.py
Klaar! reporter.py gemaakt volgens PLAN.md

Kernfuncties:
- get_db_connection()     Alleen-lezen SQLite met validatie
- fetch_artist_stats()    4 SQL-queries voor aggregaten
- format_json/csv()       Uitvoeropmaak
- write_output()          Wegschrijven naar bestand
- parse_args() / main()   CLI-orkestratie

Features:
- Niet-hoofdlettergevoelige artiestlookup
- Uitsplitsing per album met omzet
- Alle foutmeldingen zoals gespecificeerd
- --db-vlag voor testinjectie
Softwareontwikkeling met Claude Code

De gegenereerde code

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)
Softwareontwikkeling met Claude Code

Test de tool

flowchart: reporter.py, pytest, Uitvoer verifiëren

  • Tests controleren:
    • Geldige artiest levert data op
    • Uitvoerbestand wordt aangemaakt
    • JSON/CSV-indeling is correct
Softwareontwikkeling met Claude Code

CLI-tools testen

  • Unittests
    • Test losse functies
    • Mock databaseaanroepen
    • Snel, geïsoleerd, herhaalbaar
  • Integratietests
    • Voer het echte CLI-commando uit
    • Gebruik echte database
    • Langzamer maar realistischer
  • Wat test je:
    • Happy path — geldige artiest, juiste output
    • Fouten — artiest niet gevonden, verkeerd formaat
    • Randgevallen — lege naam, speciale tekens
    • Bestandsafhandeling — schrijfrechten, overschrijven
Softwareontwikkeling met Claude Code

Testen in de praktijk

> Use @PLAN.md to build test_reporter.py
test_reporter.py gemaakt: 31 tests in 7 klassen

Dekking:
- Connection     Geldige DB, ontbrekend bestand, ongeldig bestand
- Stats          Bekende/onbekende artiest, case-insensitive, multi-genre
- JSON           Indeling, inspringing, round-trip-serialisatie
- CSV            Twee secties, met pipes gescheiden genres, rijaantallen
- File I/O       Schrijven, overschrijven, niet-beschrijfbaar pad
- CLI-args       Vereiste args, validatie van keuzes
- Integratie     JSON/CSV-uitvoer, artiest/DB niet gevonden, opschonen

Gebruikt minimale voorgevulde SQLite-DB: onafhankelijk van chinook.db

Alle 31 tests geslaagd!
Softwareontwikkeling met Claude Code

Laten we oefenen!

Softwareontwikkeling met Claude Code

Preparing Video For Download...