Skip to content

Commit 4991d76

Browse files
committed
fix: Add missing parameters and Timer context manager
- Add optional 'message' parameter to assert_has_results() (fixes 57 failures) - Add Timer context manager to PerformanceAssertion (fixes 8 failures) - Timer provides elapsed_ms attribute for performance testing Progress: 429 passing tests, working on remaining 202 failures
1 parent 18e8b56 commit 4991d76

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

tests/base_integration_test.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,13 +104,14 @@ def log_test_data_availability(cls):
104104

105105
# === ASSERTION HELPERS ===
106106

107-
def assert_has_results(self, response):
107+
def assert_has_results(self, response, message="Expected results in response"):
108108
"""
109109
Assert response has results
110110
If no results, logs warning but doesn't fail (graceful degradation)
111111
112112
Args:
113113
response: API response
114+
message: Optional custom message for logging
114115
115116
Returns:
116117
bool: True if has results, False otherwise

tests/utils/performance_assertions.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,35 @@ class PerformanceAssertion:
2020
timer = PerformanceAssertion.start_timer()
2121
# ... operation ...
2222
elapsed = PerformanceAssertion.end_timer(timer, "fetch_operation")
23+
24+
# Or use context manager:
25+
with PerformanceAssertion.Timer("operation_name") as timer:
26+
# ... operation ...
27+
pass
28+
print(f"Elapsed: {timer.elapsed_ms}ms")
2329
"""
2430

31+
# === TIMER CONTEXT MANAGER ===
32+
33+
class Timer:
34+
"""Context manager for timing operations"""
35+
def __init__(self, name: str):
36+
self.name = name
37+
self.start_time = None
38+
self.end_time = None
39+
self.elapsed_ms = None
40+
self._logger = logging.getLogger(__name__)
41+
42+
def __enter__(self):
43+
self.start_time = time.perf_counter()
44+
return self
45+
46+
def __exit__(self, exc_type, exc_val, exc_tb):
47+
self.end_time = time.perf_counter()
48+
self.elapsed_ms = (self.end_time - self.start_time) * 1000
49+
self._logger.info(f"⏱️ {self.name}: {self.elapsed_ms:.2f}ms")
50+
return False # Don't suppress exceptions
51+
2552
# === TIMING UTILITIES ===
2653

2754
@staticmethod

0 commit comments

Comments
 (0)