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
Thanks for your interest in pytest-conversational. This is a focused pytest plugin, so the contribution flow stays simple.
Open an issue with:
Open an issue first so we can talk through the use case before you write code. The plugin scope is intentionally narrow: rule-based multi-turn assertions against a chat bot, voice assistant, or IVR menu, with no LLM in the loop on the test side. Feature requests that pull it elsewhere will get a polite redirect.
main.tests/. The CI runs pytest -v on Python 3.10, 3.11, 3.12, and 3.13.pip install -e ".[dev]"
pytest -vassert_intent, match_slot).ruff check . && ruff format . before opening a PR.If you find something that could leak bot tokens, webhook secrets, or PII from a real conversation transcript, please email me directly instead of opening a public issue. Address is on my GitHub profile.
.tessl-plugin
evals
src
pytest_conversational
tests