Closed TendTo closed 4 years ago
Questa PR darà una svolta al progetto, dobbiamo documentare il più possibile i tests e farli fare anche ai nuovi, perchè purtroppo noto che non sono "comunemente" usati. Anch'io stesso tempo fa con PyCharm provai a creare dei test usando @pytest per il DMI_Bot, ma ero troppo scarso e mi sono arreso facilmente :sweat_smile: .
Non vedo l'ora di implementare qualche test seguendo questa PR, dobbiamo testare tutto, in realtà il DMI_Bot non ha così tanto codice dal mio punto di vista e scrivere i test è anche un'occasione per fare refactoring di quelle funzioni scritte un po' male :P
Inoltre, per il db dovremmo "mockare" sqlite e testare semplicemente la logica e ciò che viene prima dell'interazione col DB.
Ottimo, lavoro questa cosa è veramente veramente utile.
L'idea era prendere spunto da ciò che ho già fatto per un altro bot e aggiungere dei test anche al DMI bot, dato che penso potrebbero essere utili, e con la speranza che qualcuno migliori la "struttura" di base che ho allestito io.
Per come la vedo io, ci sono 2 piccole-grosse problematiche.
La prima è di comodità. Per come si svolgono i test al momento, c'è bisogno che vengano aggiunti alcuni valori nel file config/settings.yaml, come spiegato nella sezione testing del README, ed è fortemente consigliato leggere la fonte linkata alla fine della sezione. Sebbene non sia niente di troppo complicato, è senza dubbio scomodo, anche se comunque lo si dovrebbe fare solo una volta, e solo se si vogliono svolgere i test.
La seconda è legata al fatto che le funzioni del bot sono molte (a scrivere un test per tutte ci vuole tempo e volontà) e alcune dipendono da scraping, e potrebbero essere difficili da testare a meno di non fare modifiche apposite (magari un database di prova con valori noti)
Diciamo in generale il tutto serve a dare uno spunto su un qualcosa che si potrebbe approfondire, ma allo stato attuale è decisamente poco utile, a meno che non vogliate testare se i comandi /start, /rappresentanti e /help -> Orari lezioni (link) funzionino ancora