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

Довольные, застенчивый гигант тестирующих модулей

Нед Боромир Старк согласен Вы используете Python, даже помыть одежду? Вы … помечены тестированием, продолжением, Python, Dortests.

Нед Боромир Старк согласен

Вы используете 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 ввел много интуитивных и … Сердечных функций время от времени, которые в настоящее время регулируются на несколько основных языков. Почему не это тоже тоже?

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

Преимущества довольно много и не ограничены:

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

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

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

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

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

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

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

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

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, которая охватывает доказывания.
  • Проверьте реализации других языков. Например, тот для Nodejs
  • Докторы и нос

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

Первоначально опубликовано в https://perigk.github.io

Оригинал: “https://dev.to/perigk/doctests-the-shy-giant-of-testing-modules-3g74”