|
3 | 3 | import logging |
4 | 4 | import tempfile |
5 | 5 | import unittest |
| 6 | +import warnings |
6 | 7 |
|
7 | 8 | from unittest import mock |
8 | 9 |
|
@@ -149,7 +150,7 @@ def test_make_object_for_context_and_decider_context(self): |
149 | 150 | with self.assertLogs(logger, logging.WARN) as captured: |
150 | 151 | # ensure no warnings are printed except for the dummy one |
151 | 152 | # https://stackoverflow.com/a/61381576/4260179 |
152 | | - logger.warn("Dummy warning") |
| 153 | + logger.warning("Dummy warning") |
153 | 154 | decider = decider_ctx_factory.make_object_for_context(name="test", span=self.mock_span) |
154 | 155 | assert len(captured.records) == 1 |
155 | 156 | self.assertEqual(["WARNING:root:Dummy warning"], captured.output) |
@@ -226,7 +227,7 @@ def test_make_object_for_context_and_decider_context_without_span(self): |
226 | 227 | with self.assertLogs(logger, logging.WARN) as captured: |
227 | 228 | # ensure no warnings are printed except for the dummy one |
228 | 229 | # https://stackoverflow.com/a/61381576/4260179 |
229 | | - logger.warn("Dummy warning") |
| 230 | + logger.warning("Dummy warning") |
230 | 231 |
|
231 | 232 | decider = decider_ctx_factory.make_object_for_context(name="test", span=None) |
232 | 233 | assert len(captured.records) == 1 |
@@ -520,9 +521,22 @@ def test_none_returned_on_get_variant_call_with_experiment_not_found(self): |
520 | 521 | decider = setup_decider(f, self.minimal_decider_context, self.mock_span, self.event_logger) |
521 | 522 |
|
522 | 523 | self.assertEqual(self.event_logger.log.call_count, 0) |
523 | | - variant = decider.get_variant("anything") |
| 524 | + with warnings.catch_warnings(record=True) as captured: |
| 525 | + variant = decider.get_variant("anything") |
| 526 | + |
| 527 | + # can't test warning log only shows up only once if `decider.get_variant("anything")` |
| 528 | + # is called again due to bug in `catch_warnings` contextmanager |
| 529 | + # see https://github.com/python/cpython/issues/73858 |
| 530 | + assert any( |
| 531 | + 'Feature "anything" not found.' |
| 532 | + in str(x.message) |
| 533 | + for x in captured |
| 534 | + ) |
524 | 535 | self.assertEqual(variant, None) |
525 | 536 |
|
| 537 | + # no exposures should be triggered |
| 538 | + self.assertEqual(self.event_logger.log.call_count, 0) |
| 539 | + |
526 | 540 | def test_get_variant_without_expose(self): |
527 | 541 | with create_temp_config_file(self.exp_base_config) as f: |
528 | 542 | decider = setup_decider(f, self.dc, self.mock_span, self.event_logger) |
|
0 commit comments