Come sviluppatore di software di 30 anni, principalmente in lingue OO, ma un principiante in Python, sto cercando di trovare la migliore procedura per isolare i test di unità in python.
Diciamo che ho il seguente, semi-pseudo-codice. So some_database_client non è un vero client di database:
from some_database_client import connection
connection.connect('server_id', 'username', 'password')
def function_under_test():
return connection.get_value('some_value_reference') + 10
Se scrivo un test per function_under_test()
, allora sto effettivamente testando la quantità potenzialmente enorme di logica nel collegare e recuperare i dati da connection
.
Invece, voglio davvero testare che function_under_test()
aggiunga dieci al valore recuperato.
Questo si riferisce a un esempio pratico reale in cui la variabile a livello di modulo connection
(o il suo equivalente nel mondo reale) viene riferita pesantemente su tutto il codice.
Pertanto, comporterebbe una modifica ampia e quindi molto rischiosa per passare connection
come argomento a tutte le funzioni che lo utilizzano. Senza fare ciò, non posso separare facilmente la variabile connection
quando sto provando a testare le funzioni che lo usano. connection
viene istanziato prima ancora che io possa eseguire il test unitario.
Esiste un modo consigliato per isolare funzioni come questa per i test? Posso certamente pensare a molti, molti modi, ma sospetto che alcuni abbiano più dello "Zen of Python" su di loro rispetto ad altri. per esempio. Avvolgere tutto nelle classi è una possibilità, ma forse è troppo lontano dal tenere semplici le cose, il che è un obiettivo di python.