The unit test cases for CLI behaviour are using a 'click.testing.CliRunner', which correctly separates the Click behaviour to be tested, versus the particular way an executable program was or was not installed.
There are some remaining test cases that directly invoke a sub-process expecting the 'towncrier' command to be available. These should all use a 'click.testing.CliRunner' to avoid that coupling.