Ho una classe che definisce un contenitore privato (beh, __container
per essere esatto poiché è python). Sto usando le informazioni all'interno di detto contenitore come parte della logica di ciò che fa la classe e ho la capacità di aggiungere / eliminare gli elementi di detto contenitore.
Per i test unitari, ho bisogno di compilare questo contenitore con alcuni dati. Quello i dati dipendono dal test fatto e quindi mettere tutto in setUp () sarebbe essere poco pratico e gonfio - in più potrebbe aggiungere effetti collaterali indesiderati.
Poiché i dati sono privati, posso solo aggiungere le cose al pubblico interfaccia dell'oggetto. Questo esegue codice che non deve essere eseguito durante un unit test e in alcuni casi è solo una copia e incolla da un altro test.
Attualmente sto prendendo in giro l'intero contenitore ma in qualche modo non si sente una soluzione elegante. A causa del lavoro con il frame mocking di Python ( mock ), questo richiede che il contenitore sia pubblico, quindi Posso usare patch.dict()
. Preferirei mantenere privati questi dati.
Quale pattern è possibile utilizzare per riempire i contenitori senza utilizzare il metodo pubblico, quindi ho i dati da testare?
C'è un modo per farlo con il mock patch.dict()
che ho perso ?