Тестирование на наличие ошибок импорта в Python
-
20-08-2019 - |
Вопрос
У нас возникла реальная проблема с людьми, которые проверяют код, который не работает, потому что что-то было переработано.По общему признанию, отчасти это связано с тем, что у наших разработчиков на самом деле нет хороших инструментов для легкого поиска подобных ошибок.
Существуют ли какие-либо инструменты, помогающие находить ошибки импорта в Python?Конечно, правильный ответ здесь - "вы должны использовать для этого свои модульные тесты". Но я нахожусь в стране устаревшего кода (по крайней мере, по определению Майкла Перса), поэтому наши модульные тесты - это то, над чем мы усиленно работаем.
В то же время было бы неплохо иметь какой-нибудь инструмент, который будет просматривать каждый каталог и импортировать в него каждый файл, просто чтобы найти любые скрипты, у которых есть ImportErrors (например, если файл или класс был недавно переименован).Я полагаю, что это не было бы ужасно трудно написать самому, но есть ли какие-либо программы, которые уже написаны для этого?
Решение
Pychecker - это для вас.Он импортирует модули и обнаружит эти ошибки.
http://pychecker.sourceforge.net/
О, и "pylint <modulename>" импортирует модуль, но я думаю, вам придется вызывать его один раз для каждого нужного модуля, где pychecker, по крайней мере, поддерживает *.py.(Pylint также поддерживает *.py, но не будет импортировать модули в этой ситуации).
Другие советы
Что-то вроде этого?
import os
for x in os.listdir("some/path"):
execfile( x )
Этого достаточно, или вам нужно больше?
Обратите внимание, что любой модуль, в котором отсутствует if __name__ == "__main__":
будет - очевидно - взлетать и начинать что-то делать.