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 hashes)

Uploaded Source

Built Distribution

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

Uploaded Python 3

Supported by

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