Submit the cool project: библиотека-костяк utbone для юнит-тестирования


    Здравствуй, Хабрахабр! Хочу предоставить твоему вниманию свой проект для юнит-тестирования. Точнее — инструмента, чтобы задуматься о тестах получше, вместо траты лишнего внимания на создание файлов, объявления импортов, классов и тест-кейсов.

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

    Введение


    utbone — библиотека командной строки (ссылка на Github-репозиторий), написанная на Python. Расшифровывается как «unit-testing bone», что в переводе означает «костяк для юнит-тестирования». С помощью одной команды в консоли можно создать шаблон для тестирования. Это позволит сэкономить часть времени на рутинных вещах типа объявления «сетап» функции, тестируя под django, например. Еще одна мини-фича это — «ассершин» в одном из тестов, можно сразу запустить тесты и посмотреть, выполняются ли они вообще в данном каталоге или нет.

    utbone mysite/polls/tests test_views django --topping
    

    С помощью команды выше в консоли можно создать следующий python-файл для тестов с названием test_views в папке тестов, направленный на тестирование django с использованием внешних библиотек mock и ddt.

    """
    Tests for
    """
    from ddt import ddt, data, unpack
    from mock import patch
    
    from django.test import TestCase
    
    
    class Test(TestCase):
        """
        Tests for
        """
    
        def setUp(self):
            """
            Initialize
            """
            pass
    
        def test_first(self):
            """
            Verify that
            """
            self.assertEqual(1, '1')
    
        @patch('')
        def test_second(self, mock_):
            """
            Assert that
            """
            pass
    
        @data(
            ('first', 'second', 'expected'),
            ('first', 'second', 'expected'),
        )
        @unpack
        def test_third(self, first, second, expected):
            """
            Make sure when
            """
            pass
    

    Базовые шаблоны


    Костяки для тестирования отличаются видом тестов и наличием топпингов (все шаблоны доступны в Github по ссылке).

    К видам на данном этапе развития проекта относятся:

    • unittest — тестирование через встроенный в Python модуль unittest;
    • django — костяк, ориентированный на тестирование в django.

    Наличие топпингов выражается через флаг --topping в конце команды создания шаблона в консоли. Он позволяет добавить часто используемые программистами mock и ddt в импорты и объявить их основные инструменты в коде — например, декоратор patch и data поверх тест-методов.

        ...
    
        @patch('')
        def test_second(self, mock_):
            """
            Assert that
            """
            pass
    
        @data(
            ('first', 'second', 'expected'),
            ('first', 'second', 'expected'),
        )
        @unpack
        def test_third(self, first, second, expected):
            """
            Make sure when
            """
            pass
    
        ...
    

    Как пользоваться


    На данном этапе уже можно начать пользоваться библиотекой. Самый верный способ — установка через pip.

    pip install utbone
    

    utbone принимает три аргумента: где создать файл, с каким названием и какого вида.
    Можно добавить четвертый — наличие топпингов (через -t или --toppings).

    utbone mysite/polls/tests test_views django --topping
    

    С помощью флага --help получите инструкции как пользоваться инструментом уже локально.

    utbone --help
    

    Спасибо за уделенное внимание.
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

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

      0

      Как минимум, странно в 2017 году использовать решения основанные на модуле unittest, когда есть прекрасный лаконичный Py.Test.

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

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