# Starlette 测试客户端：连接被拒绝

- **ID:** `python/starlette-testclient-connection-error`
- **领域:** python
- **类别:** network_error
- **验证级别:** ai_generated
- **修复率:** 80%

## 根因

测试客户端尝试连接未启动的应用服务器，或应用启动失败。

## 版本兼容性

| 版本 | 状态 | 引入 | 弃用 |
|------|------|------|------|
| 3.x | active | — | — |

## 解决方案

1. **** (95% 成功率)
   ```
   使用 with TestClient(app) as client: 确保生命周期管理
   ```
2. **** (90% 成功率)
   ```
   检查应用是否在 __main__ 中启动，并确保测试使用相同实例
   ```
3. **** (85% 成功率)
   ```
   使用 httpx 的 ASGITransport 替代 TestClient
   ```

## 无效尝试

- **** — 根本原因不是超时，而是服务器未运行。 (60% 失败率)
- **** — 绕过 TestClient 的 ASGI 支持，可能导致上下文错误。 (50% 失败率)
- **** — 可能引起端口占用或资源泄漏。 (70% 失败率)
