Skip to content

pytest-lock is a pytest plugin that allows you to "lock" the results of unit tests, storing them in a local cache.

License

Notifications You must be signed in to change notification settings

Athroniaeth/pytest-lock

Repository files navigation

pytest-lock

Overview

License MIT Python versions PyPI version codecov Workflow Documentation Status Security: Bandit

pytest-lock is a pytest plugin that allows you to "lock" the results of unit tests, storing them in a local cache. This is particularly useful for tests that are resource-intensive or don't need to be run every time. When the tests are run subsequently. pytest-lock will compare the current results with the locked results and issue a warning if there are any discrepancies.

Installation

To install pytest-lock, you can use pip:

pip install pytest-lock

Usage

Locking Tests

To lock a test, use the lock fixture. Here's an example:

from pytest_lock import FixtureLock


def test_lock_sum(lock: FixtureLock):
    args = [1, 2, 3]
    lock.lock(sum, (args,))
    ...

Run pytest with the --lock option to generate the lock files:

pytest --lock

This will generate JSON files in a .pytest-lock directory, storing the results of the locked tests.

Running Tests

Simply run pytest as you normally would:

pytest

If pytest detect the presence of lock fixtures in your tests, it will compare the results of the tests with the locked If a test result differs from its locked value, a warning will be issued.

Configuration

The locked test results are stored in a .pytest-lock directory at the root of your project. You can delete this directory to reset all locks.

Contributing

Contributions are welcome! Please read the contributing guidelines to get started.

License

This project is licensed under the MIT License - see the LICENSE.md file for details.

About

pytest-lock is a pytest plugin that allows you to "lock" the results of unit tests, storing them in a local cache.

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Packages

No packages published