Running a test in a post-hook will still mean that the model has been built and cause any issues you were concerned about.
Running a test macro in a post-hook is not a supported configuration - I think it will run the test sql, but it won’t do anything with the results if the test fails.
The recommended way to avoid deploying invalid datasets is to run a blue-green deployment, where you build everything but only switch out the tables if the tests have passed.