Створіть і протестуйте інструмент

Розробка ПЗ з Claude Code

Dani Zysman

AI Curriculum Manager @ DataCamp

Від плану до коду

recraft: half: Розробник за столом пише CLI-інструмент, у терміналі показано вивід argparse

  • Наша специфікація з уроку 4.1:
    • --artist — ім'я виконавця для запиту
    • --format — вивід JSON або CSV
    • --output — шлях до файлу з результатами
  • Claude згенерує:
    • розбір аргументів через argparse
    • запит до бази даних через MCP
    • логіку запису у файл
Розробка ПЗ з Claude Code

Патерни аргументів CLI

Шаблон Приклад Коли використовувати
Обов'язковий --artist "AC/DC" Має бути вказаний
Необов'язковий --format json Є розумний типово
Прапорець --verbose Логічний вмик./вимк.
Позиційний reporter.py data.csv Основне входження
  • Найкращі практики:
    • Додайте описи --help для кожного аргументу
    • Використовуйте значення за замовчуванням, щоб зменшити обов'язкові введення
    • Рано перевіряйте, швидко завершуйте з чіткими повідомленнями
Розробка ПЗ з Claude Code

Створення Reporter

> Use @PLAN.md to build reporter.py
Готово! Створено reporter.py за PLAN.md

Основні функції:
- get_db_connection()     SQLite лише для читання з валідацією
- fetch_artist_stats()    4 SQL-запити для агрегатів
- format_json/csv()       Форматування виводу
- write_output()          Запис у файл
- parse_args() / main()   Оркестрація CLI

Можливості:
- Пошук виконавця без урахування регістру
- Розбивка по альбомах із доходом
- Усі повідомлення про помилки як у специфікації
- Прапорець --db для тестового ін'єктування
Розробка ПЗ з Claude 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)
Розробка ПЗ з Claude Code

Протестуйте інструмент

flowchart: reporter.py, pytest, Verify Output

  • Тести перевіряють:
    • Для валідного виконавця повертаються дані
    • Створюється вихідний файл
    • Формат JSON/CSV коректний
Розробка ПЗ з Claude Code

Тестування CLI-інструментів

  • Модульні тести
    • Перевіряють окремі функції
    • Імітують виклики до бази даних
    • Швидкі, ізольовані, відтворювані
  • Інтеграційні тести
    • Запускають реальну CLI-команду
    • Використовують справжню базу даних
    • Повільніші, але реалістичніші
  • Що тестувати:
    • Happy path — валідний виконавець, коректний вивід
    • Помилки — виконавця не знайдено, хибний формат
    • Межові випадки — порожнє ім'я, спецсимволи
    • Роботу з файлами — права на запис, перезапис
Розробка ПЗ з Claude Code

Тестування в дії

> Use @PLAN.md to build test_reporter.py
Створено test_reporter.py: 31 тест у 7 класах

Покриття:
- Connection     Валідна БД, відсутній файл, невалідний файл
- Stats          Відомий/невідомий виконавець, без урах. регістру, мультижанри
- JSON           Формат, відступи, кругова серіалізація
- CSV            Два розділи, жанри через вертикальну риску, кількість рядків
- File I/O       Запис, перезапис, недоступний для запису шлях
- CLI args       Обов'язкові аргументи, перевірка варіантів
- Integration    Вивід JSON/CSV, виконавець/БД не знайдені, прибирання

Використовує мінімальну засіяну SQLite-БД: незалежно від chinook.db

Усі 31 тест пройдені!
Розробка ПЗ з Claude Code

Давайте потренуємось!

Розробка ПЗ з Claude Code

Preparing Video For Download...