python
runtime_error
ai_generated
true
AttributeError: 'TestUser' object has no attribute 'db'
ID: python/unittest-teardown-attribute-error
80%Fix Rate
87%Confidence
0Evidence
2024-07-09First Seen
Version Compatibility
| Version | Status | Introduced | Deprecated | Notes |
|---|---|---|---|---|
| 3.9 | active | — | — | — |
| 3.10 | active | — | — | — |
| 3.11 | active | — | — | — |
| 3.12 | active | — | — | — |
Root Cause
setUpClass or setUp failed silently (or was misspelled) so the attribute assigned in setUp is never created, but tearDown still references it.
generic中文
setUpClass 或 setUp 静默失败(或拼写错误),导致 setUp 中赋值的属性从未创建,但 tearDown 仍引用它。
Workarounds
-
85% success
class TestUser(unittest.TestCase): def setUp(self): self.db = connect() def tearDown(self): if hasattr(self, 'db'): self.db.close() -
95% success
def setUp(self): self.db = connect() self.addCleanup(self.db.close)
Dead Ends
Common approaches that don't work:
-
80% fail
Hides the real setup failure; subsequent tests may run against a half-initialized state.
-
70% fail
If setUp is the failing method, referencing the attribute earlier just moves the error.