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.