> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/nemo/guardrails/llms.txt.
> For full documentation content, see https://docs.nvidia.com/nemo/guardrails/llms-full.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/nemo/guardrails/_mcp/server.

# nemoguardrails.testing.chat_harness

Ergonomic helper for writing conversational tests against a guardrails config.

## Module Contents

### Classes

| Name                                                        | Description                            |
| ----------------------------------------------------------- | -------------------------------------- |
| [`TestChat`](#nemoguardrails-testing-chat_harness-TestChat) | Helper class for easily writing tests. |

### Functions

| Name                                                                            | Description |
| ------------------------------------------------------------------------------- | ----------- |
| [`_is_data_in_events`](#nemoguardrails-testing-chat_harness-_is_data_in_events) | -           |

### Data

[`_TEST_PROVIDERS_WITH_TOKEN_USAGE`](#nemoguardrails-testing-chat_harness-_TEST_PROVIDERS_WITH_TOKEN_USAGE)

### API

```python
class nemoguardrails.testing.chat_harness.TestChat(
    config: nemoguardrails.RailsConfig,
    llm_completions: typing.Optional[typing.List[str]] = None,
    streaming: bool = False,
    llm_exception: typing.Optional[Exception] = None,
    token_usage: typing.Optional[typing.List[typing.Dict[str, int]]] = None,
    llm: typing.Optional[nemoguardrails.testing.fake_model.FakeLLMModel] = None
)
```

Helper class for easily writing tests.

```python
nemoguardrails.testing.chat_harness.TestChat.__lshift__(
    msg: str
)
```

```python
nemoguardrails.testing.chat_harness.TestChat.__rshift__(
    msg: typing.Union[str, dict]
)
```

```python
nemoguardrails.testing.chat_harness.TestChat.bot(
    expected: typing.Union[str, dict, list]
)
```

```python
nemoguardrails.testing.chat_harness.TestChat.bot_async(
    msg: str
)
```

async

```python
nemoguardrails.testing.chat_harness.TestChat.user(
    msg: typing.Union[str, dict]
)
```

```python
nemoguardrails.testing.chat_harness._is_data_in_events(
    events: typing.List[typing.Dict[str, typing.Any]],
    event_data: typing.List[typing.Dict[str, typing.Any]]
) -> bool
```

```python
nemoguardrails.testing.chat_harness._TEST_PROVIDERS_WITH_TOKEN_USAGE = ['openai', 'azure_openai', 'nim']
```