Pytest fixtures#
TUI Forms registers a pytest plugin via the pytest11 entry point.
Any project with tui-forms[test] in its dependencies gets the fixtures listed below.
See Test with the pytest plugin for usage examples.
Fixtures#
renderer_klass#
renderer_klass() -> type[BaseRenderer]
Returns the renderer class used by render_form and render_form_capture_input.
Defaults to StdlibRenderer.
Override this fixture in your conftest.py to test against a different renderer.
make_questions#
make_questions(schema: dict[str, Any]) -> list[BaseQuestion]
Parse a JSONSchema dict and return the resulting list of question objects.
make_form#
make_form(schema: dict[str, Any], *, root_key: str = "") -> Form
Build a Form from a JSONSchema dict.
Uses make_questions internally.
Pass root_key to nest all answers under a single key.
render_form#
render_form(frm: Form, inputs: list[str], *, confirm: bool = False) -> dict[str, Any]
Render a form with simulated user input.
The patching strategy adapts automatically based on renderer_klass:
StdlibRenderer: patches
builtins.inputandbuiltins.print.RichRenderer / CookiecutterRenderer: mocks the
_consoleobject.
Set confirm=True to exercise the confirmation screen.
render_form_capture_input#
render_form_capture_input(frm: Form, inputs: list[str]) -> tuple[dict[str, Any], list[str]]
Like render_form, but also captures the prompt strings passed to input() (or _console.input()).
Returns a tuple of (answers_dict, list_of_prompt_strings).
Protocols#
The factory callables returned by fixtures conform to typed protocols.
Import them from tui_forms.fixtures for type annotations.
from tui_forms.fixtures import MakeForm, MakeQuestions, RenderForm, RenderFormCaptureInput
Protocol |
Fixture |
|---|---|
|
|
|
|
|
|
|
|