Skip to main content
actions batch pypi codecov example image

PyTest-Locker

The test-locker can be used to “lock” data from during a test. This means that rather than having to manually specify the expected output you lock the data when it corresponds to expected bahaviour.

Why use Locker

  • Time efficient: No need to hard code expected responses. (Especially usefull for data heavy unittests)

  • Easy to verify changes:

    • Seperates logic of the test and expected values in the test further

    • Lock files, and changes to them, are easy to interpret. Therefore, evaluting them in pull-requests a great method of quality controll.

Install

run pip install pytest-locker

Use

  • Step 1: Add from pytest_locker import locker to your conftest.py file

  • Step 2: To access the locker by adding it to the method parameters i.e. def test_example(locker)

  • Step 3: Use locker.lock(your_string, optional_name) to lock the data.

  • Additionally: Don’t forget to commit the .pytest_locker/ directory for ci/cd testing

And you’re all set!

Tip

When using locks to test your file it is even more important than usual that the pytest rootdir is fixed. Click the link for all the options (one is adding a pytest.ini to the root folder).

The Locker test Flows

There are two modes based on for locking.

  • When user input is allowed, i.e. when running pytest with --capture no or -s

    When user input is allowed and the given data does not correspond to the data in the lock the user is prompted if the new data should be stored or if the tests should fail.

  • When user input is captured which is default behavior for pytest

    If user input is not allowed the tests will automatically fail if the expected lock file does not exist or if the data does not correspond to the data in the lock file.

The Locker class

You can also use pytest_locker.Locker (i.e. the class of which the locker fixture returns an instance). directly to create fixtures that locks a (non-string) object without needing to turn the object into a string it.

Examples

For example of use look at the tests in https://github.com/Luttik/repr_utils.

Release files for pytest-locker 0.2.5

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-locker 0.2.5
File Size Uploaded
pytest-locker-0.2.5.tar.gz 5.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pytest-locker 0.2.5
File Interpreter ABI Platform
pytest_locker-0.2.5-py3-none-any.whl Python 3 none any Details

Total release size: 10.9 kB

Release files / pytest-locker-0.2.5.tar.gz

Download URL pytest-locker-0.2.5.tar.gz
Size 5.5 kB
Tags Source
SHA-256 checksum
How to use checksums
f2c3bb2da02b4334cce44633573fa697cda48f65d1ebf5fd0b7df7ef3bbb3554
BLAKE2b-256 checksum
How to use checksums
cf05bf43493cdc8cf2c143602304e51aee062314b2ba918809cd1f3938ba85b0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.1.4 CPython/3.8.2 Windows/10

Release files / pytest_locker-0.2.5-py3-none-any.whl

Download URL pytest_locker-0.2.5-py3-none-any.whl
Size 5.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8c28075d59f3ccfc1f1cd99f879232fd01c279585297a3558179ec584935fb89
BLAKE2b-256 checksum
How to use checksums
b5324ab0135bb285c4804ac1821df1c3b210928c8743e1fe6eac5fc955841dcd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.1.4 CPython/3.8.2 Windows/10

Release history Release notifications | RSS feed

0.3.0

2 release files

0.2.9

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

This release

0.2.5 This release

2 release files

0.2.4

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.5

2 release files

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