testing.plugin.dtexample

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.

Functions

IPython.testing.plugin.dtexample.ipfunc()

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

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

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

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’

IPython.testing.plugin.dtexample.iprand()

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’

IPython.testing.plugin.dtexample.iprand_all()

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’

IPython.testing.plugin.dtexample.pyfunc()

Some pure python tests...

>>> pyfunc()
'pyfunc'
>>> import os
>>> 2+3
5
>>> for i in range(3):
...     print i,
...     print i+1,
...
0 1 1 2 2 3
IPython.testing.plugin.dtexample.random_all()

A function where we ignore the output of ALL examples.

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
klasdfj;
>>> 1+2
again,  anything goes
blah...
IPython.testing.plugin.dtexample.ranfunc()

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’