pontos.testing package¶
A module containing classes and functions mostly useful for creating unit tests
- class pontos.testing.AsyncIteratorMock(iterable)¶
A class to mock an async iterator from an iterable like a list
Example
from pontos.testing import AsyncIteratorMock values = [1, 2, 3] mock = AsyncIteratorMock(values) async for value in mock: print(value)
- pontos.testing.add_sys_path(directory)¶
Context Manager to add a directory path to the module search path aka. sys.path. The directory path is removed when the context manager is left.
- Parameters:
directory (str | PathLike) – A os.PathLike directory to add to sys.path
- Return type:
Generator[None, None, None]
Example
from pontos.helper import add_sys_path with add_sys_path("/tmp/test-modules"): import mymodule
- pontos.testing.ensure_unload_module(module)¶
A context manager to ensure that a module gets removed even if an error occurs
- Parameters:
module (str | ModuleType) – Module instance or name of the Python module to unload. For example: foo.bar
- Return type:
Generator[None, None, None]
Example
from pontos.helper import ensure_unload_module with ensure_unload_module("foo.bar"): do_something()
- pontos.testing.temp_directory(*, change_into=False, add_to_sys_path=False)¶
Context Manager to create a temporary directory
- Parameters:
- Returns:
A path to the created temporary directory
- Return type:
Example
from pontos.testing import temp_directory with temp_directory(change_into=True) as tmp: new_file = tmp / "test.txt"
- pontos.testing.temp_file(content=None, *, name='test.toml', change_into=False)¶
A Context Manager to create a temporary file within a new temporary directory. The temporary file and directory are removed when the context is exited.
- Parameters:
- Returns:
A path to the created temporary file
- Return type:
Example
from pontos.testing import temp_file with temp_file("Lorem Ipsum", name="foo.txt") as fpath:
- pontos.testing.temp_git_repository(*, user_name='Max Mustermann', user_email='max.mustermann@example.com', branch='main')¶
Context Manager to create a temporary git repository on the filesystem
- Parameters:
user_name (str) – User name to configure in the repository. Default: Max Mustermann
user_email (str) – Email address of the user to configure in the repository. Default: max.mustermann@example.com
branch (str) – Branch name to create. Default: main
- Returns:
A path to the created temporary git repository directory
- Return type:
Example
from pontos.testing import temp_git_repository with temp_git_repository() as repo: new_file = repo / "foo.txt" new_file.write_text("Lorem Ipsum") exec_git("add", "foo.txt")
- pontos.testing.temp_python_module(content, *, name='foo', change_into=False)¶
A Context Manager to create a new Python module in a temporary directory. The temporary directory will be added to the module search path and removed from the search path when the context is exited. Also it is ensured that the module is unloaded if the context is exited.
- Parameters:
- Returns:
A path to the created temporary Python module file
- Return type:
Example
from pontos.testing import temp_python_module with temp_python_module( "def hello(value):\n print(f'Hello {value}')", name="world" ) as python_module_path: from world import hello hello("World")
- pontos.testing.unload_module(module)¶
Unload a Python module
- Parameters:
module (str | ModuleType) – Module instance or name of the Python module to unload. For example: foo.bar