When I see rules like these, I like to dig beneath them to discover interesting distinctions and effects. Once I understand the effects, I can decide case by case whether I want those effects.
A key effect of an assertion is to terminate the test if the assertion is not satisfied. None of the code after a failing assertion is executed.
So: When would I want to execute the subsequent code, and when would I want to avoid it? For me, the key distinction is whether the subsequent code would give me useful diagnostic information, or only noise.
If the subsequent code might help me diagnose what went wrong, I might break my test into multiple tests, each with one assertion. That way, even if one test fails, I can get the useful information from the other tests.
On the other hand, if the code that follows a failed assertion would generate only noise, I might leave the code as a single test with multiple assertions, so that a failing assertion can terminate the test and avoid generating the noise.
So that’s how I treat “training wheel” rules in any domain. Look for the important effects and distinctions. Then consider those effects and distinctions in light of what I want to accomplish.
Dale