Skip to content

Decorators and nose plugin for focusing on particular tests when running nosetests

License

Notifications You must be signed in to change notification settings

delfick/nose-focus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Nose Focus

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.

Usage

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

Api

nose_focus.focus(func)
Sets nose_focus to True on func
nose_focus.focus_all(kls)
Sets nose_focus_all to True on kls. 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 to True on thing. 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

How it works

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.

Installation

Use pip!:

pip install nose-focus

Or if you're developing it:

pip install -e .
pip install -e ".[tests]"

How it worksk

Tests

To run the tests in this project, just use the helpful script:

.. code-block:: bash
./test.sh

About

Decorators and nose plugin for focusing on particular tests when running nosetests

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •