testing.doctester¶
Module: testing.doctester
¶
Inheritance diagram for nipy.testing.doctester
:

Custom doctester based on Numpy doctester
To run doctests via nose, you’ll need nosetests nipy/testing/doctester.py
--doctest-test
, because this file will be identified as containing tests.
Classes¶
NipyDoctest
¶
- class nipy.testing.doctester.NipyDoctest¶
Bases:
nipy.fixes.numpy.testing.noseclasses.NumpyDoctest
- __init__()¶
- addOptions(parser, env=None)¶
Add command-line options for this plugin.
The base plugin class adds –with-$name by default, used to enable the plugin.
Warning
Don’t implement addOptions unless you want to override all default option handling behavior, including warnings for conflicting options. Implement
options
instead.
- add_options(parser, env=None)¶
Non-camel-case version of func name for backwards compatibility.
Warning
DEPRECATED: Do not use this method, use
options
instead.
- afterContext()¶
- can_configure = False¶
- configure(options, config)¶
Configure plugin.
- doctest_case_class¶
alias of
nipy.fixes.numpy.testing.noseclasses.NumpyDocTestCase
- doctest_ignore = ['generate_numpy_api.py', 'setup.py']¶
- doctest_optflags = 12¶
- enableOpt = None¶
- enabled = False¶
- extension = None¶
- help()¶
Return help for this plugin. This will be output as the help section of the –with-$name option that enables the plugin.
- loadTestsFromFile(filename)¶
Load doctests from the file.
Tests are loaded only if filename’s extension matches configured doctest extension.
- loadTestsFromModule(module)¶
Load doctests from the module.
- makeTest(obj, parent)¶
Look for doctests in the given object, which will be a function, method or class.
- matches(name)¶
- name = 'nipydoctest'¶
- options(parser, env=<class 'nipy.utils._NoValue'>)¶
Register commmandline options.
- out_check_class¶
- prepareTestLoader(loader)¶
Capture loader’s suiteClass.
This is used to create test suites from doctest files.
- score = 1000¶
- set_test_context(test)¶
Configure test object to set test context
We set the numpy / scipy standard doctest namespace
- Parameters
- testtest object
with
globs
dictionary defining namespace
- Returns
- None
Notes
test object modified in place
- suiteClass¶
alias of
nose.plugins.doctests.DoctestSuite
- test_finder_class¶
alias of
nipy.fixes.numpy.testing.noseclasses.NumpyDocTestFinder
- tolist(val)¶
- wantFile(file)¶
Override to select all modules and any file ending with configured doctest extension.
NipyOutputChecker
¶
- class nipy.testing.doctester.NipyOutputChecker¶
Bases:
nipy.fixes.numpy.testing.noseclasses.NumpyOutputChecker
- __init__(*args, **kwargs)¶
- check_output(want, got, optionflags)¶
Return True iff the actual output from an example (got) matches the expected output (want). These strings are always considered to match if they are identical; but depending on what option flags the test runner is using, several non-exact match types are also possible. See the documentation for TestRunner for more information about option flags.
- output_difference(example, got, optionflags)¶
Return a string describing the differences between the expected output for a given example (example) and the actual output (got). optionflags is the set of option flags used to compare want and got.
Functions¶
- nipy.testing.doctester.ignore_dtype(in_str)¶
Removes dtype=[dtype] from string in_str
- Parameters
- in_strstr
String maybe containing dtype specifier
- Returns
- out_strstr
String from which the dtype specifier has been removed.
Examples
>>> arr = np.arange(5, dtype='i2')
Here’s the normal repr:
>>> arr array([0, 1, 2, 3, 4], dtype=int16)
The repr with the dtype bits removed
>>> ignore_dtype(repr(arr)) 'array([0, 1, 2, 3, 4])' >>> ignore_dtype('something(again, dtype=something)') 'something(again)'
Even if there are more closed brackets after the dtype
>>> ignore_dtype('something(again, dtype=something) (1, 2)') 'something(again) (1, 2)'
We need the close brackets to match
>>> ignore_dtype('again, dtype=something') 'again, dtype=something'
- nipy.testing.doctester.round_numbers(in_str, precision)¶
Replace fp numbers in in_str with numbers rounded to precision
- Parameters
- in_strstr
string possibly containing floating point numbers
- precisionint
number of decimal places to round to
- Returns
- out_strstr
in_str with any floating point numbers replaced with same numbers rounded to precision decimal places.
Examples
>>> round_numbers('A=0.234, B=12.345', 2) 'A=0.23, B=12.35'
Rounds the floating point value as it finds it in the string. This is even true for numbers with exponentials. Remember that:
>>> '%.3f' % 0.3339e-10 '0.000'
This routine will recognize an exponential as something to process, but only works on the decimal part (leaving the exponential part is it is):
>>> round_numbers('(0.3339e-10, "string")', 3) '(0.334e-10, "string")'
- nipy.testing.doctester.strip_array_repr(in_str)¶
Removes array-specific part of repr from string in_str
This parser only works on lines that contain only an array repr (and therefore start with
array
, and end with a close parenthesis. To remove dtypes in array reprs that may be somewhere within the line, use theIGNORE_DTYPE
doctest option.- Parameters
- in_strstr
String maybe containing a repr for an array
- Returns
- out_strstr
String from which the array specific parts of the repr have been removed.
Examples
>>> arr = np.arange(5, dtype='i2')
Here’s the normal repr:
>>> arr array([0, 1, 2, 3, 4], dtype=int16)
The repr with the ‘array’ bits removed:
>>> strip_array_repr(repr(arr)) '[0, 1, 2, 3, 4]'