Test per ImportErrors in Python
-
20-08-2019 - |
Domanda
Stiamo riscontrando un vero problema con le persone che effettuano il check-in del codice che non funziona perché qualcosa è stato refactored. Certo, questo è in parte dovuto al fatto che i nostri sviluppatori non hanno davvero buoni strumenti per trovare facilmente questo tipo di errori.
Esistono strumenti per aiutare a trovare ImportErrors in Python? Naturalmente, la risposta corretta qui è & Quot; per questo dovresti usare i tuoi test unitari. & Quot; Ma sono nella terra del codice legacy (almeno secondo la definizione di Michael Feathers), quindi i nostri test unitari sono qualcosa su cui stiamo lavorando intensamente.
Nel frattempo, sarebbe bello avere una sorta di strumento che passi attraverso ogni directory e importa ogni file al suo interno solo per trovare eventuali script che hanno ImportErrors (come dire se un file o una classe è stata rinominata di recente) . Suppongo che questo non sia terribilmente difficile da scrivere da solo, ma ci sono già programmi che sono già stati scritti per farlo?
Soluzione
Pychecker è per te. Importa i moduli e troverà questi errori.
http://pychecker.sourceforge.net/
Oh, e " pylint < nome modulo > " importerà il modulo, ma suppongo che dovresti chiamarlo una volta per ogni modulo che desideri, dove pychecker almeno supporta * .py. (Pylint supporta anche * .py ma non importa i moduli in quella situazione).
Altri suggerimenti
Qualcosa del genere?
import os
for x in os.listdir("some/path"):
execfile( x )
È abbastanza o ne avresti bisogno di più?
Nota che qualsiasi modulo privo di if __name__ == "__main__":
- ovviamente - decollerà e inizierà a fare cose.