Ho davvero provato ad iniziare ad isolare i miei test di unità in modo da poter individuare dove si verificano gli errori piuttosto che avere il mio intero schermo diventare rosso con guasti quando una cosa va storta. Funziona in tutte le istanze tranne quando qualcosa in un inizializzatore fallisce.Un buon modo per isolare i test che dipendono da un inizializzatore
Guarda anche questi test:
@setup_directory(test_path)
def test_filename(self):
flexmock(lib.utility.time).should_receive('timestamp_with_random').and_return(1234)
f = SomeFiles(self.test_path)
assert f.path == os.path.join(self.test_path, '1234.db')
@setup_directory(test_path)
def test_filename_with_suffix(self):
flexmock(lib.utility.time).should_receive('timestamp_with_random').and_return(1234)
f = SomeFiles(self.test_path, suffix='.txt')
assert f.path == os.path.join(self.test_path, '1234.txt')
che sto beffarda metodi dipendenti in modo che la cosa di cui sono prova è completamente isolato. Quello che noti è che la classe deve essere istanziata per ogni singolo test. Se nell'inizializzatore viene introdotto un errore, ogni singolo test fallisce.
Questo è il costruttore incriminato che chiama inizializzatore della classe:
SomeFiles(*args)
C'è un modo per isolare o deridere il costruttore inizializzatore o di un oggetto?
Mock \ _ \ _ init__. Sembra una risposta semplice quando ci penso ora :) Ho usato flexmock per fare questo flexmock (SomeFiles) .should_receive ('\ _ \ _ init__') –