Metadata-Version: 2.1
Name: pytest-level
Version: 0.1.2
Summary: Select tests of a given level or lower
Home-page: https://github.com/encukou/pytest-level
Author: Petr Viktorin
Author-email: encukou@gmail.com
License: MIT
Platform: UNKNOWN
Classifier: Framework :: Pytest
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Description-Content-Type: text/markdown
Requires-Dist: pytest

# pytest-level

Mark test cases with a *level*, then de-select tests with a given level or higher.

When giving a teaching/practice assignment with pre-written tests, either all
tests can be given at once (leaving students overwhelmed and unsure which
failures should be fixed next), or piece-wise (in individual files -- which
becomes a mess for larger projects).

With this plugin, tests for a teaching/practice assignment can be given in
a single file. Students are then told to run with `--level 1`, fix the few red
tests, then go to `--level 2`, etc.
Unlike with keywords, all the lower-level tests will still be run:
`--level 2` will run both `level(1)` and `level(2)` tests.


## Installation

In a Python environment (e.g. `venv`), do:

    python -m pip install pytest-level


## Usage

Mark tests with a numeric `level` marker:

    @pytest.mark.level(1)
    def test_basic_math():
        assert 1 + 1 == 2

    @pytest.mark.level(2)
    def test_intermediate_math():
        assert 10 / 2 == 5

    @pytest.mark.level(3)
    def test_complicated_math():
        assert 10 ** 3 == 1000

Then, run pytest with `--level`:

    python -m pytest --level 2

This will deselect tests of a higher level.

Without `--level`, all tests are run.


## Licence

The code is available under a MIT license. May it serve you well.


