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.

https://travis-ci.org/delfick/nose-focus.png?branch=master

Changelog

0.2.0
  • No longer support python2, which also means this module now has no dependencies

  • code is formatted with black

  • nose_focus tests are now written using pytest

0.1.4
  • When you focus a class, tests using that class outside that module will also be focused

before 0.1.4
  • Changelog not kept

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.2.0.tar.gz (5.0 kB view details)

Uploaded Source

File details

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

File metadata

  • Download URL: nose_focus-0.2.0.tar.gz
  • Upload date:
  • Size: 5.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for nose_focus-0.2.0.tar.gz
Algorithm Hash digest
SHA256 207f5902d66da33f6594bcb38e6b64fc80095f8c97c9a752e12081e2c2eb565e
MD5 a4846f3918e493ecbf4860975b3d7632
BLAKE2b-256 7a97adbbdc5395d6943e66f94f478a6bdcdb6eea1a06ce4b2225b47d5253c478

See more details on using hashes here.

Supported by

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