Skip to main content

Decorator and plugin to make nose focus on specific tests

Project description

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 several want* hooks on a nose plugin to only let through methods that we want to focus on.

A method 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 in the lineage 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]"

Tests

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

./test.sh

Or run tox:

tox

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nose_focus-0.1.tar.gz (4.0 kB view details)

Uploaded Source

File details

Details for the file nose_focus-0.1.tar.gz.

File metadata

  • Download URL: nose_focus-0.1.tar.gz
  • Upload date:
  • Size: 4.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for nose_focus-0.1.tar.gz
Algorithm Hash digest
SHA256 7ce8587f0dfde41e36607a503fd54d2b5d1bfe7bd12f70ee5e9ba6d0a0370ddb
MD5 15d734ec55cd199a6464986545efe979
BLAKE2b-256 2afd94fbd4ffe751dc1b90360701e0275c9694135292289af2da91e9504afa93

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page