2012-02-15 5 views
6

Non voglio creare file reali nel mio unittest. Così mi trovo spesso a armeggiare con con un nonsense boilerplate e creando finte fabbriche per pseudo-file. Mi chiedevo se non sarebbe stato più bello per evitare (in questo caso) questi sforzi inutili e cercare qualcosa di simile nel campo di applicazione di un metodo unittest locale:Monkey-patch una funzione incorporata per un test unitario?

open = lambda x: StringIO() 

Questo sarebbe ok? O ci sono avvertenze importanti/non rilasciare in questo approccio ed essere meglio di mock-factories?

risposta

4

Questo va bene, purché si capisca come funzionano gli ambiti Python (vale a dire localmente va bene, a livello globale causerà problemi).

Probabilmente dovresti anche considerare che i tuoi monkeypatch avranno diverse modalità di errore dagli originali, e hanno test appropriati per assicurare che il tuo codice interagisca correttamente con i builtin.