How to Think Like a Computer Scientist: Learning with Python 2nd Edition. / Как стать программистом: учимся вместе с Python. Второе издание.: Chapter 5 Fruitful functions

← →
Английский оригинал Перевод на русский

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

В python есть встроенный модуль doctest предназначенный для unit-тестирования. Доктектсы в тройных кавычках могут быть написаны в начале тела функции или скрипта.

czech 10.07.10 в 10:08

0

Модуль doctest автоматически выполняет любое выражение начинающеюся с >>> и сравнивает следующую строку с выводом интерпритатора

Trashman 24.07.10 в 22:02

0

Чтобы увидеть как это работает, поместите следующее в скрипт с именем myfunctions.py :

Trashman 24.07.10 в 22:04

0

def is_divisible_by_2_or_5(n):
"""
>>> is_divisible_by_2_or_5(8)
True
"""

Trashman 24.07.10 в 22:05

0

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

Trashman 24.07.10 в 22:06

0

Последние три строчки запускают doctest. Поместите их в конец любого файла, содержащий doctest. Мы объясним как они работают в Главе 10, когда мы будет обсуждать модули.

Trashman 24.07.10 в 22:10

0

Запуская скрипт вы получите следующий результат:

Trashman 24.07.10 в 22:16

0

$ python myfunctions.py
**********************************************************************
File "myfunctions.py", line 3, in __main__.is_divisible_by_2_or_5
Failed example:
is_divisible_by_2_or_5(8)
Expected:
True
Got nothing
**********************************************************************
1 items had failures:
1 of 1 in __main__.is_divisible_by_2_or_5
***Test Failed*** 1 failures.
$

Trashman 24.07.10 в 22:17

0

Это пример проваленного теста. Тест говорит: если вы вызываете is_divisible_by_2_or_5(8) результат должен быть True. Так как is_divisible_by_2_or_5 написан без возврата чего либо, тест проваливается, и doctest сообщает нам что ожидается True, но ничего не получено.

Trashman 24.07.10 в 22:26

0

Мы можем сдать этот тест возвратив True:

Trashman 24.07.10 в 22:28

0

def is_divisible_by_2_or_5(n):
"""
>>> is_divisible_by_2_or_5(8)
True
"""
return True

Trashman 24.07.10 в 22:28

0

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

Trashman 24.07.10 в 22:29

0
Минутку...

← Предыдущая страница