Python Intermediate Day 2

- Writing unit tests with `unittest` and `pytest`

- Mocking objects the `unittest.mock` module

- Test coverage and best practices

- Python versions compatibility testing

- Exception hierarchy in Python

- `try`, `except`, `else`, `finally` blocks

- Custom exceptions and raising exceptions

- Using logging for visibility into errors

- Debugging tools and techniques

- Using `pdb`, `ipdb` and other debuggers

- Analyzing stack traces and debugging common issues

- Profiling and optimizing code performance

- Understanding iterators and iterable objects

- Creating custom iterators

- Generator functions and expressions

- Using generators for efficient data processing

DojoBits is now ISO/IEC 27001 certified