Warning
This documentation is for an old version of IPython. You can find docs for newer versions here.
Decorators for labeling test objects.
Decorators that merely return a modified version of the original function object are straightforward. Decorators that return a new function object need to use nose.tools.make_decorator(original_function)(decorator) in returning the decorator, in order to preserve metadata such as function name, setup and teardown functions and so on - see nose.tools for more information.
This module provides a set of useful decorators meant to be ready to use in your own tests. See the bottom of the file for the ready-made ones, and if you find yourself writing a new one that may be of generic use, add it here.
Included decorators:
Lightweight testing that remains unittest-compatible.
NOTE: This file contains IPython-specific decorators. Using the machinery in IPython.external.decorators, we import either numpy.testing.decorators if numpy is available, OR use equivalent code in IPython.external._decorators, which we’ve copied verbatim from numpy.
Decorator to make a simple function into a normal test via unittest.
Apply a wrapper to a function for decoration.
This mixes Michele Simionato’s decorator tool with nose’s make_decorator, to apply a wrapper in a decorator so that all nose attributes, as well as function signature and other properties, survive the decoration cleanly. This will ensure that wrapped functions can still be well introspected via IPython, for example.
Factory function to create a decorator that applies one or more labels.
Parameters: | label : string or sequence
it decorates. Labels are attributes of the decorated function with their : value set to True. :
|
---|---|
Returns: | A decorator. : |
Examples
A simple labeling decorator:
>>> slow = make_label_dec('slow')
>>> slow.__doc__
"Labels a test as 'slow'."
And one that uses multiple labels and a custom docstring:
>>> rare = make_label_dec(['slow','hard'],
... "Mix labels 'slow' and 'hard' for rare tests.")
>>> rare.__doc__
"Mix labels 'slow' and 'hard' for rare tests."
Now, let’s test using this one: >>> @rare ... def f(): pass ... >>> >>> f.slow True >>> f.hard True
Make function raise SkipTest exception if skip_condition is true
Parameters: | skip_condition : bool or callable.
|
---|---|
Returns: | decorator : function
|
Notes
You will see from the code that we had to further decorate the decorator with the nose.tools.make_decorator function in order to transmit function name, and various other metadata.
Decorator factory - mark a test function for skipping from test suite.
Parameters: | msg : string
|
---|---|
Returns: | decorator : function
|
The reverse from skipif, see skipif for details.
Can module be imported? Returns true if module does NOT import.
This is used to make a decorator to skip tests that require module to be available, but delay the ‘import numpy’ to test execution time.
Decorator to skip test when at least one of commands is not found.