This provides a nice little decorator and a nose-tests switch to make nose only run the tests that you are focusing on right now.
Just use the focus decorator in your tests:
from nose_focus import focus
@focus
def test_my_amazing_feature():
assert_is_awesome(my_feature)
Or set it on your classes:
from nose_focus import focus
@focus
class MyTests(TestCase):
[...]
Or if you also want to focus on subclasses:
@focus_all
class MyTests(TestCase):
[..]
class OtherTests(MyTests):
# Also part of the test because it's parent class has focus_all
[..]
Or at the module level, set nose_focus
to True
nose_focus = True
def test_my_other_amazing_feature():
assert_great_things()
And use the switch when you run your tests:
nosetests --with-focus
And the plugin will skip all the tests that we aren't focusing on or set to be ignored.
You may also use nose_focus to run all your tests except those that are ignored.
from nose_focus import focus_ignore
@focus_ignore
def test_that_is_ignored():
[..]
def test_that_is_not_ignored():
[..]
And use the --without-ignored
to make it run all tests except those that
are ignored:
nosetests --without-ignored
- nose_focus.focus(func)
- Sets
nose_focus
toTrue
onfunc
- nose_focus.focus_all(kls)
- Sets
nose_focus_all
toTrue
onkls
. The plugin looks for this attribute in the lineage of base classes for each method when determining to skip them or not. - nose_focus.focus_ignore(thing)
- Sets
nose_focus_ignore
toTrue
onthing
. The plugin will look for this on each method and the lineage of base classes and will ignore the method if it finds it. - --with-focus nosetests switch
- Enables the plugin making it only run those tests that are set to focus and are not set to be ignored
- --without-ignored nosetests switch
- Makes the plugin run all tests except those that are set to be ignored
The plugin uses the wantMethod
hook to only let through methods that we want
to focus on.
A method is is focused
if it or it's parent class has nose_focus
set to
a Truthy value or if any class in the lineage of parent classes has
nose_focus_all
set to a Truthy value and nothing has nose_focus_ignore
set to a Truthy value.
Use pip!:
pip install nose-focus
Or if you're developing it:
pip install -e .
pip install -e ".[tests]"
How it worksk
To run the tests in this project, just use the helpful script:
.. code-block:: bash
./test.sh