Refactored the test runner to use a helper class in order to report code coverage

now code coverage can be reported like this:

```python

with CoverageHandler(...):
      run_tests()
```