Тесты. Запуск тестов при сохранении файлов. TDD


Что автотесты кода потенциально дадут


Показываю. VSCode запуск тестов при сохранении Python файла с использованием Run on Save

Мой типичный flow работы при написании utility функций:


Настройки

// .vscode/settings.json
{
  // ...
  "runOnSave.commands": [
    // ...
    {
      "match": "(bf_lib|bf_game)\\.py$",
      "command": "testing.runCurrentFile",
      "runIn": "vscode"
    },
  ],
  "python.testing.unittestEnabled": false,
  "python.testing.pytestEnabled": true,
}

В данном случае при сохранении bf_lib.py или bf_game.py у меня бы прогонялись тесты внутри этих файлов

Это запускается VSCode команда testing.runCurrentFile (это не команда, что в терминале вызывается, а то, что отрабатывало при запуске «Test: Run tests in current file» из списка команд VSCode). Кодовые названия команд VSCode можно доставать через ПКМ по ним в окне Keyboard Shortcuts


Запуск тестов при сохранении GDScript файла

Я использую Godot GUT

// .vscode/settings.json
{
  // ...
  "runOnSave.commands": [
    // ...
    {
      "match": "\\.gd$",
      "command": "godot --no-header --headless -s addons/gut/gut_cmdln.gd -gdir src/tests -gexit -gprefix test -gdisable_colors",
      "async": false
    },
  ],
}

Тесты лежат в src/tests/. См. репу


Показываю. Как тесты убирают необходимость в документации комментами

def iter_neighbors(
    seq: t.Iterable[T],
) -> t.Generator[
    tuple[int, T | None, int, T | None], None, None
]: ...


def _test_neighbor_iter():
    assert list(iter_neighbors([])) == [
        (-1, None, 0, None),
    ]
    assert list(iter_neighbors([10])) == [
        (-1, None, 0, 10),
        (0, 10, 1, None),
    ]
    assert list(iter_neighbors([10, 20, 30])) == [
        (-1, None, 0, 10),
        (0, 10, 1, 20),
        (1, 20, 2, 30),
        (2, 30, 3, None),
    ]


Тут есть:


Ссылки


Hulvdan