# 类型错误：ids 必须是列表或可调用对象，得到字符串

- **ID:** `python/pytest-fixture-params-ids-type`
- **领域:** python
- **类别:** type_error
- **验证级别:** ai_generated
- **修复率:** 80%

## 根因

在 parametrize 中传递 ids 参数时使用了字符串而不是列表或函数。

## 版本兼容性

| 版本 | 状态 | 引入 | 弃用 |
|------|------|------|------|
| 3.8 | active | — | — |

## 解决方案

1. **使用列表** (98% 成功率)
   ```
   @pytest.mark.parametrize('x', [1,2], ids=['a','b'])
   ```
2. **使用可调用对象** (95% 成功率)
   ```
   @pytest.mark.parametrize('x', [1,2], ids=lambda x: f'id_{x}')
   ```

## 无效尝试

- **ids='a,b'** — 尝试将字符串转换为列表但忘记括号 (40% 失败率)
- **ids=lambda x: 'id'** — 尝试使用 lambda 但 lambda 返回字符串而非列表 (30% 失败率)
