A Report contains one or more Expect statements that have been executed (initialized), and which store their own individual outcomes. These are stored sequentially, along with data about which run of the connected Test they failed on. A Report is created by the Runner.
A Report should be an iterable queue that offers a signal for when a new message is added.
This function accepts a single Except object (expect), storing its outcome data in the Report object.
This function logs the measurement data from a Benchmark.
After each test run, the Runner must call lap() on the Report it is building. This indicates that one run of the test is complete, and the subsequent calls to log() should be associated with the next run.