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

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

Введение


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

Спасибо за уделенное внимание.

Комментарии (0)