All of these are designed to run tests as small atomic items which report a failure if anything goes wrong and then move to the next test. (opposed to most homebrewed scripts that are very often a giant long sequence which breaks if something goes amiss and cannot cope with any unexpected failure, or some kind of processing loop stepping through a file, and still have the same kinds of issues.