@@ -115,6 +115,21 @@ class TestEdgeCases(unittest.IsolatedAsyncioTestCase):
115115 async def asyncSetUp (self ):
116116 cwd = os .path .dirname (os .path .realpath (__file__ ))
117117 self .config_path = os .path .join (cwd , "test.conf" )
118+ self .fq_instance = None
119+
120+ async def asyncTearDown (self ):
121+ """Clean up Redis state and close connections after each test."""
122+ # If a test initialized FQ with real Redis, clean up
123+ if self .fq_instance is not None :
124+ try :
125+ if self .fq_instance ._r is not None :
126+ await self .fq_instance ._r .flushdb ()
127+ await self .fq_instance .close ()
128+ except Exception :
129+ # Ignore errors during cleanup - tests may have mocked or closed connections
130+ # This prevents tearDown failures from masking test failures
131+ pass
132+ self .fq_instance = None
118133
119134 def test_missing_config_file_raises (self ):
120135 with self .assertRaisesRegex (FQException , "Config file not found" ):
@@ -159,22 +174,22 @@ async def test_cluster_initialization(self):
159174 async def test_dequeue_payload_none (self ):
160175 """Covers dequeue branch where payload is None (queue.py line 212)."""
161176 fq = FQ (self .config_path )
177+ self .fq_instance = fq
162178 await fq ._initialize ()
163179 fake_dequeue = FakeLuaDequeue ()
164180 fq ._lua_dequeue = fake_dequeue
165181 result = await fq .dequeue ()
166182 self .assertEqual (result ["status" ], "failure" )
167183 self .assertTrue (fake_dequeue .called )
168- await fq .close ()
169184
170185 async def test_clear_queue_delete_only (self ):
171186 """Covers clear_queue else branch (queue.py lines 499, 502)."""
172187 fq = FQ (self .config_path )
188+ self .fq_instance = fq
173189 await fq ._initialize ()
174190 await fq ._r .flushdb ()
175191 response = await fq .clear_queue (queue_type = "noqueue" , queue_id = "missing" )
176192 self .assertEqual (response ["status" ], "Failure" )
177- await fq .close ()
178193
179194 async def test_close_fallback_paths (self ):
180195 """Covers close() fallback paths (queue.py lines 528-549)."""
@@ -249,10 +264,10 @@ async def test_get_queue_length_invalid_params(self):
249264 async def test_deep_status_real_redis (self ):
250265 """Covers deep_status with real redis (queue.py line 420)."""
251266 fq = FQ (self .config_path )
267+ self .fq_instance = fq
252268 await fq ._initialize ()
253269 result = await fq .deep_status ()
254270 self .assertTrue (result )
255- await fq .close ()
256271
257272
258273if __name__ == "__main__" :
0 commit comments