A LibCST codemod to remove pytest fixtures applied via the usefixtures decorator, as well as its parametrizations.
Project description
pytest fixture remove codemod
A LibCST codemod to remove pytest fixtures applied via the usefixtures
decorator,
as well as its parametrizations.
[!NOTE] Only fixture usage will be removed, not its definition.
Usage
This package requires Python >= 3.8.
Install from PyPI.
pip install pytest-fixture-remover
Run against your tests, specifying a fixture to remove.
python -m libcst.tool codemod -x pytest_fixture_remover.RemovePytestFixtureCommand my_project_tests/ --name clean_db
Add --no-format
option to stop LibCST from running Black against modified code.
Before/after examples can be found in the tests.test_command
module.
Note on formatting
This codemod assumes that the target code is formatted with Black using the magic trailing comma. It may change the existing formatting in several ways:
- When removing a fixture name from the
usefixtures
call. - When removing a value that parametrizes the fixture via
parametrize
.
In both cases the behavior is the same and obeys the following rules:
- If there's only one item left after modifying, remove the trailing comma.
- If there are multiple items left after modifying and the removed item was the last, preserve the last item's comma (or its absence).