A cleanup plugin for pytest
Project description
pytest-cleanuptotal
This plugin for pytest and for playwright-pytest helps simplify test cleanup. It does so by providing a systematic way to mark entities for deletion immediately after creation. This is particularly useful when tests involve creating complex structures, such as a bank account with an investment plan and a deposit. Without proper cleanup, attempting to delete the account may result in errors, such as a refusal due to the account not being empty. However, with pytest-cleanuptotal, entities are deleted in the correct order, ensuring that tests clean up after themselves and do not interfere with each other. Read more here.
Installation
$ pip install pytest-cleanuptotal
Usage
To use pytest-cleanuptotal, simply add the cleanuptotal fixture to the test method. This will include the cleanup functionality in your test. No further setup is required. Here's an example:
def test_should_keep_things_tidy(cleanuptotal):
# ...
account_id = create_account("John Blow");
amount = 1000000
# usage of cleanuptotal with lambda function:
cleanuptotal.add_cleanup(lambda: delete_account(account_id))
add_investment_plan(account_id, "ModRisk");
cleanuptotal.add_cleanup(lambda: remove_investment_plan(account_id))
deposit(account_id, amount);
def remove_deposit():
url = f"https://api.example.com/user/{accountId}/withdraw"
data = {"amount": amount}
response = requests.post(url, json=data)
# usage of cleanuptotal with regular function:
cleanuptotal.add_cleanup(remove_deposit)
# ...
# Please note that the actual execution of the cleanup code would take palce AFTER test completion.
# Execution order in cleanuptotal would be remove_deposit() -> remove_investment_plan(account_id) -> delete_account(account_id).
To use type hints follow this example:
from pytest_cleanuptotal.cleanup import Cleanup
def test_should_keep_things_tidy(cleanuptotal:Cleanup):
# ... your test code here
Logging
To see all the pytest-cleanuptotal logging change the log level to 'DEBUG' (e.g., in your project's pytest.ini)
Support
For any questions or suggestions contact me at: tzur.paldi@outlook.com
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
Built Distribution
File details
Details for the file pytest_cleanuptotal-0.3.3.tar.gz
.
File metadata
- Download URL: pytest_cleanuptotal-0.3.3.tar.gz
- Upload date:
- Size: 4.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3a19d2b949224d56a65b1b5c1c245aab9c3639cad4e084e42abbd815e6d017b1 |
|
MD5 | 863a9873bf522594145b45eb0c36b304 |
|
BLAKE2b-256 | 281926d1f9953168611e7dca22be085878f46f7e0c00789aea230c9cc2aa8a30 |
File details
Details for the file pytest_cleanuptotal-0.3.3-py3-none-any.whl
.
File metadata
- Download URL: pytest_cleanuptotal-0.3.3-py3-none-any.whl
- Upload date:
- Size: 6.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b396b8c2656e3c743750ef9b743c471070ab92b63c80d33408999fef99787c99 |
|
MD5 | d1ff418c2fe347c5b42cf99d5c5a6211 |
|
BLAKE2b-256 | 48b9beb0574e18a87547322b70e4e6bd68c1bc44491a8c16d73240eaa731ba35 |