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

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

## 根因

在 pytest.mark.parametrize 中提供了非字符串类型的 ids 参数，pytest 无法生成测试 ID。

## 版本兼容性

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

## 解决方案

1. **** (100% 成功率)
   ```
   在 parametrize 中提供字符串列表：`@pytest.mark.parametrize('arg', [1,2], ids=['one', 'two'])`
   ```
2. **** (95% 成功率)
   ```
   `@pytest.mark.parametrize('arg', [1,2], ids=lambda x: f'arg_{x}')`
   ```

## 无效尝试

- **** — 如果 ids 是整数列表，强制转换可能丢失有意义的信息，且 pytest 期望字符串或可调用。 (40% 失败率)
- **** — 移除 ids 后测试仍会运行，但失去可读性，且可能影响测试报告。 (30% 失败率)
