Improve testing workflow with pytest

Changes:
- Add code coverage
- Use many more simple assertions