In most test infrastructures, such as pytest and unittest, test results are only available as pass, fail or error. This works quite well in unit and simplistic testing. However, the downside of having only three result types is the inability to describe testcase result relationships, or distinguish a test’s genuine failure, versus a failure of the test script caused by mal-design/mal-coding (e.g. the testcase encountered a coding Exception).

In order to accomodate complex test environments, pyATS supports more complicated result types such as “test blocked”, “test skipped”, “test code errored” etc, and uses objects and object relationships to describe them. These objects simplify the whole result tracking & aggregation infrastructure, and grant the ability to easily roll-up results together.

# Example
# -------
#   pyATS result objects

from pyats.results import Passed, Failed

# rolling up passed + failed yields failed
Passed + Failed
# Failed