Gotta love NeoVim's terminal! For simple projects, it can replace a lot of what dedicated plugins do, not to mention external dependencies like file watchers.

kvdev

Here is a TDD recipe for a small project. No plugins used:

Start nvim

nvim feature.py

Split a new terminal vertically

:vsp | :terminal

Get the terminal's job id.

<C-[>
:echo b:terminal_job_id
3

Switch to the other window

<C-[>
<C-w>w

Add an autocmd that sends a command to the terminal to run the tests. The job id is used here.

:au BufWritePost <buffer> :call jobsend(3, "\<C-c>clear\<CR>python3 feature_test.py\<CR>")
# do tdd

Clean up the buffer's autocmd. Run on the code window.

:au! * <buffer>