Bygg och testa verktyget

Mjukvaruutveckling med Claude Code

Dani Zysman

AI Curriculum Manager @ DataCamp

Från plan till kod

recraft: half: Utvecklare vid skrivbord kodar ett CLI-verktyg med terminal som visar argparse-utdata

  • Vår specifikation från lektion 4.1:
    • --artist — artistnamn att söka på
    • --format — JSON- eller CSV-utdata
    • --output — filsökväg för resultat
  • Claude genererar:
    • argparse-argumenttolkning
    • Databasfråga via MCP
    • Logik för filutdata
Mjukvaruutveckling med Claude Code

CLI-argumentmönster

Mönster Exempel När används
Obligatoriskt --artist "AC/DC" Måste anges
Valfritt --format json Har ett rimligt standardvärde
Flagga --verbose Boolesk av/på
Positionsbaserat reporter.py data.csv Primär indata
  • Bästa praxis:
    • Lägg till --help-beskrivningar för varje argument
    • Använd standardvärden för att minska antalet obligatoriska argument
    • Validera tidigt, misslyckas snabbt med tydliga meddelanden
Mjukvaruutveckling med Claude Code

Skapa rapportverktyget

> Use @PLAN.md to build reporter.py
Klart! reporter.py skapad enligt PLAN.md

Kärnfunktioner:
- get_db_connection()     Skrivskyddad SQLite med validering
- fetch_artist_stats()    4 SQL-frågor för aggregat
- format_json/csv()       Utdataformatering
- write_output()          Filskrivning
- parse_args() / main()   CLI-orkestrering

Funktioner:
- Skiftlägesokänslig artistsökning
- Uppdelning per album med intäkter
- Alla felmeddelanden enligt specifikation
- --db-flagga för testinjektion
Mjukvaruutveckling med Claude Code

Den genererade koden

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)
Mjukvaruutveckling med Claude Code

Testa verktyget

flowchart: reporter.py, pytest, Verifiera utdata

  • Testerna verifierar:
    • Giltig artist ger data
    • Utdatafil skapas
    • JSON-/CSV-format är korrekt
Mjukvaruutveckling med Claude Code

Testa CLI-verktyg

  • Enhetstester
    • Testa enskilda funktioner
    • Mocka databasanrop
    • Snabba, isolerade, repeterbara
  • Integrationstester
    • Kör det faktiska CLI-kommandot
    • Använd en riktig databas
    • Långsammare men mer realistiska
  • Vad du ska testa:
    • Normalfall — giltig artist, korrekt utdata
    • Felfall — artist hittas inte, felaktigt format
    • Specialfall — tomt namn, specialtecken
    • Filhantering — skrivrättigheter, överskrivning
Mjukvaruutveckling med Claude Code

Testning i praktiken

> Use @PLAN.md to build test_reporter.py
test_reporter.py skapad: 31 tester fördelade på 7 klasser

Täckning:
- Anslutning     Giltig databas, saknad fil, ogiltig fil
- Statistik      Känd/okänd artist, skiftlägesokänslig, flera genrer
- JSON           Format, indrag, round-trip-serialisering
- CSV            Två sektioner, pipe-avgränsade genrer, radantal
- Fil-I/O        Skrivning, överskrivning, oskrivbar sökväg
- CLI-argument   Obligatoriska argument, validering av val
- Integration    JSON-/CSV-utdata, artist/databas hittas inte, upprensning

Använder en minimal seedad SQLite-databas: oberoende av chinook.db

Alla 31 tester godkända!
Mjukvaruutveckling med Claude Code

Nu kör vi en övning!

Mjukvaruutveckling med Claude Code

Preparing Video For Download...