вторник, 29 апреля 2014 г.

Python doctest - интерактивное тестирование кода

Простейший пример тестирования функции

Проще всего пояснить, как это делается на примере. Ниже приведен простейший пример функции вместе с тестом для ее проверки. Как в этом тексте все сделано:

  •     В строках комментариев к функции написан тест. Тесты могут чередоваться с обычным текстом.
  •     Строчки комментария, начинающиеся с '>>>' выполняются
  •     В первой строчке, которая следует за строчками с '>>>', стоит результат, с которым будет сравнен с возвращаемый выражением в последней исполненной строке результатом. Если результаты равны, ничего не произойдет, если не равны, будет выдано сообщение об ошибке теста.
  •     Тестирование вывается вызовом функции doctest.testmod()
  •     Если хотим посмотреть, что происходит, можно вызвать тест в "разговорчивом" режиме: doctest.testmod(verbose=True)
    Для выполнения тестов, запускаем скрипты примеров на выполнение.
#! /usr/bin/python
# -*- coding: utf-8 -*-

def mult(a,b):
    """
    >>> mult(2,2)
    4
    """
    return a*b
    
if __name__ == "__main__":
    import doctest
    doctest.testmod()
    #doctest.testmod(verbose=True)
Пример с тестами в отдельном файле Все напсанное выше замечательно, но когда тестов становится больше, они начинают слишком загромождать код и появляется желание отделить их от кода. Это тоже предусмотрено. Можно вызвать функцию doctest.testfile("имя файла") и она выполнит тесты из внешнего файла. Ниже приведен пример такого подхода. Файл с тестируемым кодом:
#! /usr/bin/python
# -*- coding: utf-8 -*-

def mult(a,b):
    return a*b
    
if __name__ == "__main__":
    import doctest
    doctest.testfile("test.txt")
    #doctest.testfile("test.txt",verbose=True)

Файл тестов:

Тестирование функции mult(a,b)

>>> from test_in_other_file import mult
>>> mult(2,3)
6

Комментариев нет:

Отправить комментарий