Skip to main content

Used to lock object during testing. Essentially changing assertions from being hard coded to asserting that nothing changed

Project description

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.

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

pytest-locker-0.2.5.tar.gz (5.5 kB view details)

Uploaded Source

Built Distribution

pytest_locker-0.2.5-py3-none-any.whl (5.4 kB view details)

Uploaded Python 3

File details

Details for the file pytest-locker-0.2.5.tar.gz.

File metadata

  • Download URL: pytest-locker-0.2.5.tar.gz
  • Upload date:
  • Size: 5.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.4 CPython/3.8.2 Windows/10

File hashes

Hashes for pytest-locker-0.2.5.tar.gz
Algorithm Hash digest
SHA256 f2c3bb2da02b4334cce44633573fa697cda48f65d1ebf5fd0b7df7ef3bbb3554
MD5 d4ab312730d35ac57c9ffaa6a2e2e102
BLAKE2b-256 cf05bf43493cdc8cf2c143602304e51aee062314b2ba918809cd1f3938ba85b0

See more details on using hashes here.

File details

Details for the file pytest_locker-0.2.5-py3-none-any.whl.

File metadata

  • Download URL: pytest_locker-0.2.5-py3-none-any.whl
  • Upload date:
  • Size: 5.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.4 CPython/3.8.2 Windows/10

File hashes

Hashes for pytest_locker-0.2.5-py3-none-any.whl
Algorithm Hash digest
SHA256 8c28075d59f3ccfc1f1cd99f879232fd01c279585297a3558179ec584935fb89
MD5 18cf26427eaf4eb6ad1f94a91d77e791
BLAKE2b-256 b5324ab0135bb285c4804ac1821df1c3b210928c8743e1fe6eac5fc955841dcd

See more details on using hashes here.

Supported by

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