PyCrunch – Интеллектуальное выполнение тестов и визуальное покрытие кода в IDE

    Около 3 лет назад я перешел с C# разработки на Python. Два с половиной года я пытался найти инструмент, который был бы похож на NCrunch по удобству в ежедневной работе.

    В какой-то момент я забил на unit-тестирование, и писал код, прогоняя тесты на CI.

    Но идея никак не уходила из головы. Хотелось создать инструмент, который бы значительно упрощал разработку с помощью тестов, при этом, рекомендовать его коллегам и друзьям.

    Полгода разработки, и активное использование на собственных проектах, вызывает желание показать продукт сообществу.

    «А зачем мне это нужно?»:

    1. Автоматический запуск только тех тестов, которые затронуты изменениями кода. (Запуск происходит в фоновом режиме, и не отвлекает от написания кода)

    2. Понимание, какие конкретно тесты, затрагивают определенную строчку кода (Удобно, например, отслеживать путь выполнения программы и понимать какие ветви кода еще не покрыты тестами):



    3. Красные тряпкимаркеры, визуализируют проблемные строчки кода, которые требуют особого внимания:



    Технически, проект состоит из двух частей: движок и PyCharm-плагин, которые общаются между собой через веб-сокеты. Вся логика заключена в движке, плагин лишь отрисовывает внутреннее состояние движка. (Еще есть третья часть – папка `front` на гитхабе, я сам ее использовал, пока писал плагин для IDE)

    Скачиваем бета версию, и пробуем в своих проектах. Не забудьте прочитать инструкцию для запуска конкретного фреймворка (На данный момент поддерживается PyTest и Django)

    Осторожно: Django-тесты, ради ускорения работы и паралельного выполнения, запускаются на той же базе данных, что и `manage.py runserver`. Подробные причины такого решения, и пути обхода можно найти на гитхабе.

    Демо целиком:

    Комментарии 2

      0
      А включение циклического прогона тестов с покрытием кода в pycharm разве не делают тоже самое?
        0
        Проверил, запускает все тесты, для которых включен циклический прогон. При чем при изменении файла, не связванного с тестами, они все запускаются заново.

        При этом в отчете покрытия, не понятно, какие тесты затрагивают конкретную строчку кода

        Вот как это отображается у меня:
        image
        image

        А это — в PyCharm:
        image

        Когда я первый раз эту штуку пробовал в pycharm (около года или двух назад), оно еще переключало фокус на окно с покрытием. Сейчас вроде стало лучше, но все равно не юзабельно.

      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

      Самое читаемое