Skip to main content

pytest-only

Only run tests marked with @pytest.mark.only. If none are marked, all tests run as usual.

Borrowed from mocha.

Installation

pip install pytest-only

Usage

Use it on functions

import pytest

def test_that_will_not_run():
    assert 0

@pytest.mark.only
def test_that_will_run():
    assert 1
$ py.test -v test_example.py

============================= test session starts ==============================
platform linux -- Python 3.6.1, pytest-3.0.7, py-1.4.33, pluggy-0.4.0 -- /tmp/example/bin/python3.6
cachedir: .cache
rootdir: /tmp/example, inifile:
plugins: only-1.0.0
collected 2 items

test_example.py::test_that_will_run PASSED

=========================== 1 passed in 0.00 seconds ===========================

Or use it on classes

import pytest

class TestThatWillNotRun:
    def test_that_will_not_run(self):
        assert 0


@pytest.mark.only
class TestThatWillRun:
    def test_that_will_run(self):
        assert 1
$ py.test -v test_example.py

============================= test session starts ==============================
platform linux -- Python 3.6.1, pytest-3.0.7, py-1.4.33, pluggy-0.4.0 -- /tmp/example/bin/python3.6
cachedir: .cache
rootdir: /tmp/example, inifile:
plugins: only-1.0.0
collected 2 items

test_example.py::TestThatWillRun::test_that_will_run PASSED

=========================== 1 passed in 0.00 seconds ===========================

Or use it on modules

# test_example.py
import pytest

pytestmark = pytest.mark.only

def test_that_will_run():
    assert 1
# test_example2.py
def test_that_will_not_run():
    assert 0
$ py.test -v test_example.py test_example2.py

============================= test session starts ==============================
platform linux -- Python 3.6.1, pytest-3.0.7, py-1.4.33, pluggy-0.4.0 -- /home/they4kman/.virtualenvs/tmp-53d5944c7c78d28/bin/python3.6
cachedir: .cache
rootdir: /home/they4kman/.virtualenvs/tmp-53d5944c7c78d28, inifile:
plugins: only-1.0.0
collected 2 items

test_example.py::test_that_will_run PASSED

=========================== 1 passed in 0.00 seconds ===========================

Disable for single test run

To run all the tests, regardless of whether @pytest.mark.only is used, pass the --no-only flag to pytest:

$ py.test --no-only

If --no-only has already been passed (perhaps by way of addopts in pytest.ini), use the --only flag to re-enable it:

$ py.test --no-only --only

Pylint checker

If you use pylint, you can avoid committing stray only marks with the bundled plugin. Just enable the pylint checker in your plugins and enable the unexpected-focused rule.

[MASTER]
load-plugins=pytest_only.ext.pylint

[MESSAGES CONTROL]
enable=unexpected-focused
$ cat test_ninja.py
import pytest

@pytest.mark.only
def test_ninja():
    pass

$ pylint test_ninja.py
************* Module mymain
test_ninja.py:3:0: W1650: Unexpected focused test(s) using pytest.mark.only: def test_ninja (unexpected-focused)

Development

  1. Install the test/dev requirements using Poetry

    poetry install
  2. Run the tests

    py.test
  3. Run the tests on all currently-supported platforms

    tox

Metadata

Release files for pytest-only 2.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pytest-only 2.1.1
File Size Uploaded
pytest_only-2.1.1.tar.gz 4.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pytest-only 2.1.1
File Interpreter ABI Platform
pytest_only-2.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 11.4 kB

Release files / pytest_only-2.1.1.tar.gz

Download URL pytest_only-2.1.1.tar.gz
Size 4.9 kB
Tags Source
SHA-256 checksum
How to use checksums
d417e8d9f962fc772b7e130ab2319fe056f9191ff555fc178f4b66d6a18e248c
BLAKE2b-256 checksum
How to use checksums
355c8772432474700a9f784776dd22ae471c33f077a06cd56884cd1a176c4d18
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.2 CPython/3.10.13 Linux/5.13.0-52-generic

Release files / pytest_only-2.1.1-py3-none-any.whl

Download URL pytest_only-2.1.1-py3-none-any.whl
Size 6.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1bb74ae95ac44366da85ccf7da0815f11ae0bb0d07754d0def7f14584ead5988
BLAKE2b-256 checksum
How to use checksums
d306f65a216f192eeeead9ea8ccae8d3fe27df79fa93cf7e28900a0c96d1ca22
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.2 CPython/3.10.13 Linux/5.13.0-52-generic

Release history Release notifications | RSS feed

2.1.2

2 release files

This release

2.1.1 This release

2 release files

2.1.0

2 release files

2.0.0

2 release files

1.2.2

1 release file

1.2.1

1 release file

1.2.0

1 release file

1.1.0

1 release file

1.0.1

1 release file

1.0.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page