CtrlK
BlogDocsLog inGet started
Tessl Logo

golikovichev/pytest-conversational

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

1.56x
Quality

100%

Does it follow best practices?

Impact

97%

1.56x

Average score across 3 eval scenarios

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

Evaluation results

100%

3%

Pizza Ordering Bot Test Suite

Multi-turn slot-filling bot with metadata and latency matchers

Criteria
Without context
With context

Bot adapter signature

100%

100%

conversation_factory usage

100%

100%

convo.say() for turns

100%

100%

Turn.metadata intent recording

100%

100%

Turn.metadata slot recording

100%

100%

Turn.metadata latency recording

100%

100%

convo.state for cross-turn slots

100%

100%

has_intent matcher

100%

100%

has_slot matcher

100%

100%

has_state matcher

100%

100%

responds_within matcher

100%

100%

convo.last.bot usage

50%

100%

92%

8%

Customer Support Bot Test Suite

Expect matchers suite for a customer support bot

Criteria
Without context
With context

BotAdapter signature

100%

100%

conversation_factory fixture

0%

100%

convo.last.bot usage

100%

100%

expect.contains used

100%

100%

contains case-insensitive default

100%

100%

expect.not_contains used

100%

100%

not_contains guards internal details

100%

100%

expect.regex used

100%

100%

regex match object used

0%

0%

expect.one_of used

100%

100%

results.txt present

100%

100%

100%

93%

Trivia Bot Test Suite

Adapter error propagation and add_user history seeding

Criteria
Without context
With context

add_user seeding

0%

100%

Exception propagation

46%

100%

Partial turn in turns

0%

100%

Partial turn bot empty

0%

100%

convo.history used

0%

100%

history is tuples

0%

100%

convo.transcript() called

0%

100%

expect.contains used

0%

100%

conversation_factory fixture

0%

100%

Evaluated
Agent
Claude Code
Model
Claude Sonnet 4.6

Table of Contents