UNICT-DMI / Telegram-DMI-Bot

A telegram bot for the DMI students 🎓 (@DMI_Bot)
https://t.me/DMI_Bot
GNU General Public License v3.0
41 stars 30 forks source link

There will be testing (in the future (maybe)) #110

Closed TendTo closed 4 years ago

TendTo commented 4 years ago

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

Helias commented 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.