Esiste una differenza logica runtime tra questi due metodi? O qualche differenza di gusto?
In caso contrario, dovrei dimenticarmi di __init__
e utilizzare solo setUpClass
pensando qui a classi di unittests come su spazi dei nomi invece del paradigma OOP della lingua?Quando dovrei usare setUpClass e quando __init__?
risposta
I due sono piuttosto diversi.
setUpClass
è un metodo di classe, per uno, quindi ti lascio solo si imposta classe attributi.
Sono anche chiamati in momenti diversi. Il test runner crea una nuova istanza per ogni test. Se la classe di test contiene 5 metodi di test, vengono create 5 istanze e __init__
viene chiamato 5 volte.
setUpClass
viene normalmente chiamato solo una volta. (Se si mescola l'ordine del test ei metodi di test di classi diverse sono mescolati, setUpClass
può essere chiamato più volte, usare tearDownClass
per pulire correttamente e questo non sarà un problema).
Inoltre, un test runner di solito crea tutte le istanze di test all'inizio dell'esecuzione del test; questo è normalmente economico, in quanto le istanze di test non mantengono (molto) lo stato, quindi non occuperanno molta memoria.
Come regola generale, è necessario non utilizzare __init__
affatto. Utilizzare setUpClass
per creare lo stato condiviso tra tutti i test e utilizzare setUp
per creare lo stato per test. setUp
viene chiamato appena prima dell'esecuzione di un test, pertanto è possibile evitare di accumulare molto spazio in memoria fino a quando non è necessario per un test, e non prima.
- 1. C# Quando dovrei usare List e quando dovrei usare l'arraylist?
- 2. Quando dovrei usare require() e quando usare define()?
- 3. Quando dovrei usare AQL?
- 4. Quando dovrei usare CompiledQuery?
- 5. Quando dovrei usare ConcurrentSkipListMap?
- 6. quando dovrei usare _mm_sfence _mm_lfence e _mm_mfence
- 7. Quando dovrei usare remove_reference e add_reference?
- 8. Quando dovrei usare Sql Azure e quando dovrei usare la tabella Storage?
- 9. Quando dovrei usare Import-Package e quando dovrei usare Require-Bundle?
- 10. Quando dovrei usare Option.empty [A] e quando dovrei usare None in Scala?
- 11. Quando dovrei usare git stash?
- 12. Quando dovrei usare l'Interface Builder?
- 13. Quando dovrei usare AutoMapper e quando non lo sono
- 14. Quando dovrei usare async/await e quando no?
- 15. Quando dovrei usare # in ColdFusion?
- 16. Quando dovrei usare un parser?
- 17. Quando dovrei usare metodi statici?
- 18. Quando dovrei usare l'inizializzazione uniforme?
- 19. quando usare Task e quando usare Thread?
- 20. Quando usare undef_method e quando usare remove_method?
- 21. Quando usare viewDidLoad e quando usare awakeFromNib
- 22. Quando dovrei usare un delegato in asp.net?
- 23. django - quando dovrei usare media_root o static_root?
- 24. Couchbase - Quando dovrei usare N1QL vs Views?
- 25. Quando dovrei usare il protocollo compresso MySQL?
- 26. Quando dovrei usare PowerShell su applicazioni tradizionali?
- 27. Quando dovrei usare setUserState in Joomla?
- 28. Quando dovrei usare C++ anziché SQL?
- 29. Quando dovrei usare il permesso ACCESS_COARSE_LOCATION?
- 30. Quando dovrei usare metodi pubblici/privati / statici?