Рубрики
Без рубрики

Познакомьтесь с доказанными, застенчивыми гигантами тестирования модулей

Автор оригинала: Periklis Gkolias.

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

Идея

Если вы являетесь вентилятором Python, то я верю, что вы время от времени использовали консоль Python. Предположим, вы пишете несколько встроенных функций, таких как ниже, чтобы экспериментировать с веществом:

$ python
Python 3.6.4 |Anaconda custom (64-bit)| (default, Jan 16 2018, 18:10:19) 
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> def addme(a):
...     return a + a
... 
>>> addme(2)
4
>>> addme(1.9)
3.8
>>> addme(0)
0
>>>

Итак, вы написали встроенную функцию, и вы сделали пару теста, проводимые на нем, чтобы сделать некоторые основные проверки. Что если Python может прочитать вышеупомянутый вывод и сделать рассуждение для вас, во время выполнения? Это идея дочащихся, мой друг.

Шутки в сторону?

Да, полностью! Python представил много интуитивных и … душераздирующихся функций время от времени, которые сейчас являются основными на нескольких основных языках. Почему это не должно быть тоже?

Преимущества доковых

Преимущества докторов довольно много.

Прежде всего, они смехотся легко писать. Я имею в виду, вы могли бы даже обеспокоен своим младшим двоюродным братом, который изучает анатомию атомов почвы (и не программирования), потому что он должен вы закрепить свой компьютер.

Во-вторых, если вы не найдете копию пасты сложно, они более радостны, чтобы написать. На этот раз вы должны быть знакомы с терминальной средой, хотя.

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

И, наконец, они исполняются с дотемным модулем и читаемым, не зная немного питона.

Как насчет модульных тестов?

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

Как насчет насмешливо?

Долги могут обрабатывать издевание изящно с большой библиотекой под названием Minimock Отказ Я призываю вас дать ему попробовать, и дайте мне знать ваши мысли.

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

Рабочий пример

Разговор дешево, так что давайте напишем какой-нибудь код. Ниже приведен рабочий пример, использующий функцию приглашения выше.

addme(a):
    """
    This is a docstring, usually to explain the use of a function. Please do not confuse it with doctests. They both mean to provide forms of documentation, but doctests are executable too.
    >>> addme(4)
    8
    >>> addme('a')
    'aa'
    >>> addme(set())
    Traceback (most recent call last):
        ...
    TypeError: unsupported operand type(s) for +: 'set' and 'set'
    """
    return a + a

if __name__ == '__main__':
    import doctest
    doctest.testmod()
    print(addme(1))

Есть пара очков, которые стоит заметить здесь:

  • Долги должны жить внутри докстроинга. В тудах просто «копировальная вставка» вывод ваших быстрых тестов Python Console.
  • Если вам нужно имитировать случаю исключения, вам нужно только добавить первые и последние строки сообщения исключения. Вы ожидали, что традиционные кондиционируют дорожки или сделают любую странную логику, чтобы получить полный путь файла и напечатать его в полном объеме? Давай, Питон не сделает это:)
  • Вам нужна дочащая библиотека для проведения тестов. Нос не нужен это, хотя.
  • Вы можете запустить выше, как обычно, с python mydocctests.py.

Мне нужны мои тесты, чтобы работать как часть цикла CI/CD/CT. Что для меня?

Я не здесь, чтобы разочаровать тебя, я?:)

нос Тестовый бегун поддерживает все ваши доки в дополнение к вашим тестам подразделения. Просто добавьте флаг - С доктором И ты хорош, чтобы пойти.

Приятные вещи, куда мне идти отсюда?

  • Прочитайте Python Документация для более подергивания и случаев.
  • Прочитайте эту фантастику книга И особенно глава 4, которая охватывает доказывания.
  • Проверьте реализации других языков. Например, один для Oddjs
  • Докторы и нос

Спасибо за прочтение этой статьи, я надеюсь, что вам понравилось, и что статья вызвала ваш интерес к написанию более (и менее болезненных) испытаний. Пожалуйста, распространите любовь к кнопкам ниже, если так. Не стесняйтесь добавлять свои мысли и опыт с доказанными.

Первоначально опубликовано на мой блог Отказ