DocTests

#!/usr/bin/env python
#
# [SNIPPET_NAME: DocTests]
# [SNIPPET_CATEGORIES: Testing, doctest]
# [SNIPPET_DESCRIPTION: Basic example of using Python DocTests]
# [SNIPPET_DOCS: http://docs.python.org/library/doctest.html]
# [SNIPPET_AUTHOR: David Futcher <[email protected]>]
# [SNIPPET_LICENSE: MIT]

import doctest

def fibonacci(start=(0, 1), stop=10):
    """ Generates the fibonacci sequence up to up to the
        stop'th term (stop=10 will generate up to fib(10))

        >>> fibs = []
        >>> start = (0, 1)
        >>> stop = 10
        >>> fib5 = 3
        >>> fib10 = 34
        >>> for i in fibonacci(start=start, stop=stop):
        ...     fibs.append(i)
        >>> len(fibs)
        10
        >>> fibs[0] == start[0]
        True
        >>> fibs[1] == start[1]
        True
        >>> fibs[4] == fib5
        True
        >>> fibs[9] == fib10
        True
    """
    a, b = start
    while stop:
        yield a
        a, b = b, a + b
        stop -= 1

if __name__ == '__main__':
    doctest.testmod(verbose=True)