# config-tests-per-prompt (Filter Tests by Prompt)

This example demonstrates how to run specific tests only with specific prompts using the test-level `prompts` field.

## Overview

By default, promptfoo runs each test against all prompts (a cartesian product). The `prompts` field on test cases lets you break this pattern and associate specific tests with specific prompts.

## Use Cases

- Different assertion criteria for different prompt styles
- Testing prompt-specific behaviors
- Organizing large test suites with mixed prompt types

## Quick Start

```bash
npx promptfoo@latest init --example config-tests-per-prompt
npx promptfoo@latest eval
```

## Key Features

- **Exact matching**: Reference prompts by label or ID
- **Wildcard patterns**: `Math:*` matches `Math:Basic`, `Math:Advanced`
- **Strict validation**: Invalid references error at config load time
- **defaultTest inheritance**: Set a default prompt filter for all tests

## Configuration

The example uses the echo provider for demonstration. In production, replace with your preferred LLM provider.

```yaml
prompts:
  - id: factual
    label: Factual Assistant
    raw: 'You are factual. Answer: {{question}}'
  - id: creative
    label: Creative Writer
    raw: 'Be creative. Answer: {{question}}'

tests:
  - vars:
      question: 'What is 2+2?'
    prompts:
      - Factual Assistant # Only runs with this prompt
    assert:
      - type: contains
        value: '4'
```

## Learn More

See the [Filtering Tests by Prompt documentation](https://www.promptfoo.dev/docs/configuration/test-cases#filtering-tests-by-prompt) for more details.
