IPython Documentation

Table Of Contents

Previous topic

Module: testing.nosepatch

Next topic

Module: testing.plugin.show_refs

This Page


This documentation is for an old version of IPython. You can find docs for newer versions here.

Module: testing.plugin.dtexample

Simple example using doctests.

This file just contains doctests both using plain python and IPython prompts. All tests should be loaded by nose.

6 Functions


Some pure python tests...

>>> pyfunc()
>>> import os
>>> 2+3
>>> for i in range(3):
...     print i,
...     print i+1,
0 1 1 2 2 3

Some ipython tests...

In [1]: import os

In [3]: 2+3 Out[3]: 5

In [26]: for i in range(3):
....: print i, ....: print i+1, ....:

0 1 1 2 2 3

Examples that access the operating system work:

In [1]: !echo hello hello

In [2]: !echo hello > /tmp/foo_iptest

In [3]: !cat /tmp/foo_iptest hello

In [4]: rm -f /tmp/foo_iptest

It’s OK to use ‘_’ for the last result, but do NOT try to use IPython’s numbered history of _NN outputs, since those won’t exist under the doctest environment:

In [7]: ‘hi’ Out[7]: ‘hi’

In [8]: print repr(_) ‘hi’

In [7]: 3+4 Out[7]: 7

In [8]: _+3 Out[8]: 10

In [9]: ipfunc() Out[9]: ‘ipfunc’


A function with some random output.

Normal examples are verified as usual: >>> 1+3 4

But if you put ‘# random’ in the output, it is ignored: >>> 1+3 junk goes here... # random

>>> 1+2
again,  anything goes #random
if multiline, the random mark is only needed once.
>>> 1+2
You can also put the random marker at the end:
# random
>>> 1+2
# random
.. or at the beginning.

More correct input is properly verified: >>> ranfunc() ‘ranfunc’


A function where we ignore the output of ALL examples.


# all-random

This mark tells the testing machinery that all subsequent examples should be treated as random (ignoring their output). They are still executed, so if a they raise an error, it will be detected as such, but their output is completely ignored.

>>> 1+3
junk goes here...
>>> 1+3
>>> 1+2
again,  anything goes

Some ipython tests with random output.

In [7]: 3+4 Out[7]: 7

In [8]: print ‘hello’ world # random

In [9]: iprand() Out[9]: ‘iprand’


Some ipython tests with fully random output.

# all-random

In [7]: 1 Out[7]: 99

In [8]: print ‘hello’ world

In [9]: iprand_all() Out[9]: ‘junk’