Какие инструменты статического тестирования применяются для кода на Python?

«Какие инструменты статического тестирования применяются для кода на Python?» — вопрос из категории Основы тестирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, для Python существует несколько категорий инструментов статического анализа (без выполнения кода):

  • Линтеры (Linters): Проверяют стиль, потенциальные ошибки и сложность кода.
    • Pylint, Flake8, pycodestyle
  • Статические анализаторы типов (Type Checkers): Выявляют несоответствия в аннотациях типов.
    • MyPy
  • Инструменты анализа безопасности и качества: Ищут уязвимости, антипаттерны и "запахи кода".
    • Bandit, SonarQube (с плагином для Python)

Пример использования MyPy:

# example.py
# Аннотации типов в функции
def greet(name: str) -> str:
    return f"Hello, {name}!"

# MyPy обнаружит ошибку типа: аргумент 123 не является строкой (str)
greet(123)

Запуск анализа: mypy example.py

Это позволяет находить целый класс ошибок на этапе написания кода.