From 43e14a8603909f60ce950223853868fcba984296 Mon Sep 17 00:00:00 2001 From: Claas Date: Tue, 5 Nov 2024 18:31:16 +0100 Subject: [PATCH] /tests folder : updated with latest changes from python_project_template --- tests/.gitignore | 2 + tests/__init__.py | 0 tests/conftest.py | 142 ++++++++++++++++++++++++++-------------------- 3 files changed, 82 insertions(+), 62 deletions(-) create mode 100644 tests/.gitignore create mode 100644 tests/__init__.py diff --git a/tests/.gitignore b/tests/.gitignore new file mode 100644 index 0000000..fe195b0 --- /dev/null +++ b/tests/.gitignore @@ -0,0 +1,2 @@ +temp_* +~$temp* \ No newline at end of file diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/conftest.py b/tests/conftest.py index 7e737d3..a45ad4c 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,62 +1,80 @@ -import logging -import os -from glob import glob -from pathlib import Path -from shutil import rmtree - -import pytest -from pytest import LogCaptureFixture - - -@pytest.fixture(scope="package", autouse=True) -def chdir(): - os.chdir(Path(__file__).parent.absolute() / "test_working_directory") - - -@pytest.fixture(scope="package", autouse=True) -def test_dir(): - return Path(__file__).parent.absolute() - - -output_dirs = [ - "results", -] -output_files = [ - "*test*.pdf", -] - - -@pytest.fixture(autouse=True) -def default_setup_and_teardown(caplog: LogCaptureFixture): - _remove_output_dirs_and_files() - yield - _remove_output_dirs_and_files() - - -def _remove_output_dirs_and_files(): - for folder in output_dirs: - rmtree(folder, ignore_errors=True) - for pattern in output_files: - for file in glob(pattern): - file = Path(file) - file.unlink(missing_ok=True) - - -@pytest.fixture(autouse=True) -def setup_logging(caplog: LogCaptureFixture): - caplog.set_level("INFO") - caplog.clear() - - -@pytest.fixture(autouse=True) -def logger(): - return logging.getLogger() - - -def pytest_addoption(parser): - parser.addoption("--show", action="store", default=False) - - -@pytest.fixture(scope="session") -def show(request): - return request.config.getoption("--show") == "True" +import logging +import os +from pathlib import Path +from shutil import rmtree + +import pytest + + +@pytest.fixture(scope="package", autouse=True) +def chdir() -> None: + """ + Fixture that changes the current working directory to the 'test_working_directory' folder. + This fixture is automatically used for the entire package. + """ + os.chdir(Path(__file__).parent.absolute() / "test_working_directory") + + +@pytest.fixture(scope="package", autouse=True) +def test_dir() -> Path: + """ + Fixture that returns the absolute path of the directory containing the current file. + This fixture is automatically used for the entire package. + """ + return Path(__file__).parent.absolute() + + +output_dirs = [ + "results", +] +output_files = [ + "*test*.pdf", +] + + +@pytest.fixture(autouse=True) +def default_setup_and_teardown(): + """ + Fixture that performs setup and teardown actions before and after each test function. + It removes the output directories and files specified in 'output_dirs' and 'output_files' lists. + """ + _remove_output_dirs_and_files() + yield + _remove_output_dirs_and_files() + + +def _remove_output_dirs_and_files() -> None: + """ + Helper function that removes the output directories and files specified in 'output_dirs' and 'output_files' lists. + """ + for folder in output_dirs: + rmtree(folder, ignore_errors=True) + for pattern in output_files: + for file in Path.cwd().glob(pattern): + _file = Path(file) + _file.unlink(missing_ok=True) + + +@pytest.fixture(autouse=True) +def setup_logging(caplog: pytest.LogCaptureFixture) -> None: + """ + Fixture that sets up logging for each test function. + It sets the log level to 'INFO' and clears the log capture. + """ + caplog.set_level("INFO") + caplog.clear() + + +@pytest.fixture(autouse=True) +def logger() -> logging.Logger: + """Fixture that returns the logger object.""" + return logging.getLogger() + + +def pytest_addoption(parser): + parser.addoption("--show", action="store", default=False) + + +@pytest.fixture(scope="session") +def show(request): + return request.config.getoption("--show") == "True"