# `offload_num_in_group` 单元测试实施方案

> 测试目录: `tests/model_executor/offloader/offload_num_in_group`

## 一、测试目标

验证 `offload_num_in_group` 对每个 group 内 offload 层数的影响，并确保非法组合能被启动阶段拒绝。

## 二、测试文件

```text
tests/model_executor/offloader/offload_num_in_group/test_param.py
```

## 三、测试矩阵

| 用例 | 输入 | 预期 |
|---|---|---|
| disabled | `group_size=4, num_in_group=0` | `layer_indices == ()` |
| one per group | `group_size=4, num_in_group=1` | `(3, 7, 11)` |
| two per group | `group_size=4, num_in_group=2` | `(2, 3, 6, 7, 10, 11)` |
| all in group | `group_size=4, num_in_group=4` | 选择所有 layer |
| default Noop | `create_ascend_weight_offloader(make_config(4, 0))` | `NoopOffloader` |
| invalid M>N | `create_ascend_weight_offloader(make_config(2, 3))` | `ValueError` |
| valid backend | `create_ascend_weight_offloader(make_config(4, 2))` | `AscendPrefetchOffloader` |

## 四、运行方式

```bash
PYTHONPATH=/data/vllm-ascend-dev/worktree \
  /data/vllm-ascend-smoke/venv/bin/python -m pytest \
  tests/model_executor/offloader/offload_num_in_group -q
```

## 五、测试原则

`offload_num_in_group` 的测试应固定 `offload_group_size`，只改变 `num_in_group`，避免两个参数的影响混在一起。
