"""Simple example using doctests. This file just contains doctests both using plain python and IPython prompts. All tests should be loaded by nose. """ def pyfunc(): """Some pure python tests... >>> pyfunc() 'pyfunc' >>> import os >>> 2+3 5 >>> for i in range(3): ... print(i, end=' ') ... print(i+1, end=' ') ... 0 1 1 2 2 3 """ return 'pyfunc' def ipfunc(): """Some ipython tests... In [1]: import os In [3]: 2+3 Out[3]: 5 In [26]: for i in range(3): ....: print(i, end=' ') ....: print(i+1, end=' ') ....: 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' """ return 'ipfunc' def 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' """ return 'ranfunc' def 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... """ pass def 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' """ return 'iprand' def 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' """ return 'iprand_all'