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.4.tar.gz (4.3 kB view details)

Uploaded Source

Built Distribution

pytest_locker-0.2.4-py3-none-any.whl (4.0 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for pytest-locker-0.2.4.tar.gz
Algorithm Hash digest
SHA256 16907f97e7e75062ee7f39c43799a485940b971426799ecf9e992a5d10ddac2d
MD5 b396af6437cd70204256e37662ef1989
BLAKE2b-256 76cacddef6e4bd257a795f087b27c16dfe5b9afd35e30312c41f8fc740f4aaa9

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for pytest_locker-0.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 89c8af9eb956cce1781bf99f0c7e30cc6517fcda5e6899e4e6c8954f7df73994
MD5 666c7375faf3b9f91bcd7955d522639c
BLAKE2b-256 bfd7e971c783f286d1c8bca4dbaa1ab8446fedfc3690f786c231f32b95fb1ee8

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