Used to lock object during testing. Essentially changing assertions from being hard coded to asserting that nothing changed
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.
run pip install pytest-locker
- 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!
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
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.
For example of use look at the tests in https://github.com/Luttik/repr_utils.
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|Filename, size||File type||Python version||Upload date||Hashes|
|Filename, size pytest_locker-0.2.0-py3-none-any.whl (3.9 kB)||File type Wheel||Python version py3||Upload date||Hashes View|
|Filename, size pytest-locker-0.2.0.tar.gz (4.4 kB)||File type Source||Python version None||Upload date||Hashes View|
Hashes for pytest_locker-0.2.0-py3-none-any.whl