Format: text/x-python
⬇ Download File (2.9 KB)
   1  """Simple example using doctests.
   2  
   3  This file just contains doctests both using plain python and IPython prompts.
   4  All tests should be loaded by nose.
   5  """
   6  
   7  import os
   8  
   9  
  10  def pyfunc():
  11      """Some pure python tests...
  12  
  13      >>> pyfunc()
  14      'pyfunc'
  15  
  16      >>> import os
  17  
  18      >>> 2+3
  19      5
  20  
  21      >>> for i in range(3):
  22      ...     print(i, end=' ')
  23      ...     print(i+1, end=' ')
  24      ...
  25      0 1 1 2 2 3 
  26      """
  27      return 'pyfunc'
  28  
  29  def ipfunc():
  30      """Some ipython tests...
  31  
  32      In [1]: import os
  33  
  34      In [3]: 2+3
  35      Out[3]: 5
  36  
  37      In [26]: for i in range(3):
  38         ....:     print(i, end=' ')
  39         ....:     print(i+1, end=' ')
  40         ....:
  41      0 1 1 2 2 3
  42  
  43  
  44      It's OK to use '_' for the last result, but do NOT try to use IPython's
  45      numbered history of _NN outputs, since those won't exist under the
  46      doctest environment:
  47  
  48      In [7]: 'hi'
  49      Out[7]: 'hi'
  50  
  51      In [8]: print(repr(_))
  52      'hi'
  53  
  54      In [7]: 3+4
  55      Out[7]: 7
  56  
  57      In [8]: _+3
  58      Out[8]: 10
  59  
  60      In [9]: ipfunc()
  61      Out[9]: 'ipfunc'
  62      """
  63      return "ipfunc"
  64  
  65  
  66  def ipos():
  67      """Examples that access the operating system work:
  68  
  69      In [1]: !echo hello
  70      hello
  71  
  72      In [2]: !echo hello > /tmp/foo_iptest
  73  
  74      In [3]: !cat /tmp/foo_iptest
  75      hello
  76  
  77      In [4]: rm -f /tmp/foo_iptest
  78      """
  79      pass
  80  
  81  
  82  ipos.__skip_doctest__ = os.name == "nt"
  83  
  84  
  85  def ranfunc():
  86      """A function with some random output.
  87  
  88         Normal examples are verified as usual:
  89         >>> 1+3
  90         4
  91  
  92         But if you put '# random' in the output, it is ignored:
  93         >>> 1+3
  94         junk goes here...  # random
  95  
  96         >>> 1+2
  97         again,  anything goes #random
  98         if multiline, the random mark is only needed once.
  99  
 100         >>> 1+2
 101         You can also put the random marker at the end:
 102         # random
 103  
 104         >>> 1+2
 105         # random
 106         .. or at the beginning.
 107  
 108         More correct input is properly verified:
 109         >>> ranfunc()
 110         'ranfunc'
 111      """
 112      return 'ranfunc'
 113  
 114  
 115  def random_all():
 116      """A function where we ignore the output of ALL examples.
 117  
 118      Examples:
 119  
 120        # all-random
 121  
 122        This mark tells the testing machinery that all subsequent examples should
 123        be treated as random (ignoring their output).  They are still executed,
 124        so if a they raise an error, it will be detected as such, but their
 125        output is completely ignored.
 126  
 127        >>> 1+3
 128        junk goes here...
 129  
 130        >>> 1+3
 131        klasdfj;
 132  
 133        >>> 1+2
 134        again,  anything goes
 135        blah...
 136      """
 137      pass
 138  
 139  def iprand():
 140      """Some ipython tests with random output.
 141  
 142      In [7]: 3+4
 143      Out[7]: 7
 144  
 145      In [8]: print('hello')
 146      world  # random
 147  
 148      In [9]: iprand()
 149      Out[9]: 'iprand'
 150      """
 151      return 'iprand'
 152  
 153  def iprand_all():
 154      """Some ipython tests with fully random output.
 155  
 156      # all-random
 157      
 158      In [7]: 1
 159      Out[7]: 99
 160  
 161      In [8]: print('hello')
 162      world
 163  
 164      In [9]: iprand_all()
 165      Out[9]: 'junk'
 166      """
 167      return 'iprand_all'
 168