Utilizzare il codice per qualcosa di più di quello che gli autori originali intendevano è solitamente un buon segno, in quanto il codice fornisce strumenti utili. Per quanto riguarda la ri-proposizione di moduli "al di fuori del loro intento", beh ... questo è ovviamente soggettivo e dipende fino a che punto. 
 Utilizzo di  funzioni I / O non elaborate in   imaplib     per implementare un socket non correlato basato sul protocollo di comunicazione potrebbe essere considerato di cattivo gusto (per non dire altro). Tuttavia, l'utilizzo della stessa libreria   imaplib    per implementare alcune varianti private del protocollo IMAP (improbabile che sia l'uso previsto) sarebbe IMHO meno un problema. 
 È del tutto comprensibile che tu possa trovare alcune classi e metodi convenienti nel modulo   unittest    per implementare altri tipi di test. Tuttavia, il problema è spesso di leggibilità del codice.  Per la maggior parte degli sviluppatori Python, vedere il modulo   unittest    vicino all'utilizzo suggerito idiomatico probabilmente trasmette il significato di  "questo pezzo di codice è un test unitario" .  In termini di "codice di auto-documentazione", questo è un fallimento totale nel senso che è  fuorviante per altri sviluppatori . 
 Idealmente, questa sarebbe una non-domanda. La soluzione sarebbe quella di rifattorizzare il modulo   unittest    in modo che il codice non specifico per i test unitari sia spostato su un modulo   test    o   testbase    o qualcosa del genere. Tuttavia, potresti trovare molta resistenza in tale sforzo, per ragioni politiche e pratiche. Dopo tutto, è un modulo di libreria standard e non può essere modificato facilmente come il tuo progetto. 
  Does it fly in the face of the Pythonic view to reuse / repurpose python modules for projects out side of their intent?
 In generale, non penso che questo sia "anti-Pythonic", anche se penso che il fatto che questi commenti siano accaduti più volte dovrebbe significare qualcosa. 
 Forse puoi scrivere una sorta di modulo   systemtest    che importa le cose riutilizzabili dal modulo   unittest   . È una soluzione temporanea che offre sia la chiarezza del codice  che  consente di riutilizzare il codice direttamente. Quindi, puoi scrivere un lungo commento nel modulo   systemtest    su come tutte le soluzioni alternative siano effettivamente migliori rispetto alla scrittura del tuo runner di test.