# RecursionError: 调用 Python 对象时超出最大递归深度

...
conftest.py:10: in db
    request.getfixturevalue('db')
conftest.py:10: in db
    request.getfixturevalue('db')
...

- **ID:** `python/pytest-recursion-error-fixture-cycle`
- **领域:** python
- **类别:** runtime_error
- **验证级别:** ai_generated
- **修复率:** 80%

## 根因

某个 fixture 调用 request.getfixturevalue() 时传入了自身的名称，导致无限递归。这通常发生在重构 fixture 时意外引用了错误的名称。

## 版本兼容性

| 版本 | 状态 | 引入 | 弃用 |
|------|------|------|------|
| 6.x | active | — | — |
| 7.x | active | — | — |
| 8.x | active | — | — |

## 解决方案

1. **** (98% 成功率)
   ```
   @pytest.fixture
def db(request):
    engine = request.getfixturevalue('engine')  # not 'db'
    return engine.connect()
   ```
2. **** (95% 成功率)
   ```
   @pytest.fixture
def db(engine):  # pytest injects engine directly
    return engine.connect()
   ```

## 无效尝试

- **** — Delays the crash but the infinite recursion still exhausts memory and eventually raises RecursionError or crashes the interpreter. (90% 失败率)
- **** — The recursion happens during fixture resolution before the try block can catch it in a useful way. (95% 失败率)
