Você já escreveu uma classe que funciona, mas não dá pra testar sem subir banco, abrir conexão HTTP ou criar arquivo em disco?
O problema quase sempre é o mesmo: a classe criou as próprias dependências em vez de recebê-las.
Novo post: Injeção de Dependência em Python sem Frameworks — implementação manual, Protocol para contratos, e como isso transforma a testabilidade do código.