Test chat bots, voice assistants, and IVR menus with pytest using a small Conversation object and a callable bot adapter. Use when the user wants to write rule-based assertions over multi-turn dialogue without bringing in an LLM dependency, when they have a chatbot reachable as a Python callable or HTTP webhook, when they need to keep per-conversation state across turns and assert on slot filling, when they want pytest-native fixtures and a printable transcript on failure, or when they mention voice-assistant testing, IVR menu testing, conversational AI testing, LLM bot testing (used as the target under test, not as the matcher), expect matchers for bot replies, or multi-turn dialogue tests.
99
100%
Does it follow best practices?
Impact
97%
1.56xAverage score across 3 eval scenarios
Passed
No known issues
"""pytest-conversational: rule-based multi-turn dialogue testing for pytest."""
from importlib.metadata import PackageNotFoundError, version as _pkg_version
from pytest_conversational import allure_attachments, expect, scenarios
from pytest_conversational.allure_attachments import (
attach_to_allure,
render_transcript_markdown,
serialize_transcript_json,
)
from pytest_conversational.conversation import BotAdapter, Conversation, Turn
from pytest_conversational.scenarios import (
Scenario,
ScenarioLoadError,
ScenarioTurn,
load_scenarios,
parametrize_scenarios,
)
try:
__version__ = _pkg_version("pytest-conversational")
except PackageNotFoundError:
# Package not installed (running from source tree without install).
__version__ = "0.0.0+unknown"
__all__ = [
"BotAdapter",
"Conversation",
"Scenario",
"ScenarioLoadError",
"ScenarioTurn",
"Turn",
"allure_attachments",
"attach_to_allure",
"expect",
"load_scenarios",
"parametrize_scenarios",
"render_transcript_markdown",
"scenarios",
"serialize_transcript_json",
].tessl-plugin
evals
src
pytest_conversational
tests