|
5 | 5 |
|
6 | 6 | import logging |
7 | 7 |
|
| 8 | +import pytest |
8 | 9 | from servicelib.error_codes import create_error_code, parse_error_code |
9 | 10 |
|
10 | 11 | logger = logging.getLogger(__name__) |
11 | 12 |
|
12 | 13 |
|
13 | | -def test_error_code_use_case(caplog): |
| 14 | +def test_error_code_use_case(caplog: pytest.LogCaptureFixture): |
14 | 15 | """use case for error-codes""" |
15 | | - try: |
| 16 | + with pytest.raises(RuntimeError) as exc_info: |
16 | 17 | raise RuntimeError("Something unexpected went wrong") |
17 | | - except Exception as err: |
18 | | - # 1. Unexpected ERROR |
19 | 18 |
|
20 | | - # 2. create error-code |
21 | | - error_code = create_error_code(err) |
| 19 | + # 1. Unexpected ERROR |
| 20 | + err = exc_info.value |
22 | 21 |
|
23 | | - # 3. log all details in service |
24 | | - caplog.clear() |
| 22 | + # 2. create error-code |
| 23 | + error_code = create_error_code(err) |
25 | 24 |
|
26 | | - # Can add a formatter that prefix error-codes |
27 | | - syslog = logging.StreamHandler() |
28 | | - syslog.setFormatter( |
29 | | - logging.Formatter("%(asctime)s %(error_code)s : %(message)s") |
30 | | - ) |
31 | | - logger.addHandler(syslog) |
| 25 | + # 3. log all details in service |
| 26 | + caplog.clear() |
32 | 27 |
|
33 | | - logger.error("Fake Unexpected error", extra={"error_code": error_code}) |
| 28 | + # Can add a formatter that prefix error-codes |
| 29 | + syslog = logging.StreamHandler() |
| 30 | + syslog.setFormatter(logging.Formatter("%(asctime)s %(error_code)s : %(message)s")) |
| 31 | + logger.addHandler(syslog) |
34 | 32 |
|
35 | | - # logs something like E.g. 2022-07-06 14:31:13,432 OEC:140350117529856 : Fake Unexpected error |
36 | | - assert parse_error_code( |
37 | | - f"2022-07-06 14:31:13,432 {error_code} : Fake Unexpected error" |
38 | | - ) == { |
39 | | - error_code, |
40 | | - } |
| 33 | + logger.exception("Fake Unexpected error", extra={"error_code": error_code}) |
41 | 34 |
|
42 | | - assert caplog.records[0].error_code == error_code |
43 | | - assert caplog.records[0] |
| 35 | + # logs something like E.g. 2022-07-06 14:31:13,432 OEC:140350117529856 : Fake Unexpected error |
| 36 | + assert parse_error_code( |
| 37 | + f"2022-07-06 14:31:13,432 {error_code} : Fake Unexpected error" |
| 38 | + ) == { |
| 39 | + error_code, |
| 40 | + } |
44 | 41 |
|
45 | | - logger.error("Fake without error_code") |
| 42 | + assert caplog.records[0].error_code == error_code |
| 43 | + assert caplog.records[0] |
46 | 44 |
|
47 | | - # 4. inform user (e.g. with new error or sending message) |
48 | | - user_message = ( |
49 | | - f"This is a user-friendly message to inform about an error. [{error_code}]" |
50 | | - ) |
| 45 | + logger.exception("Fake without error_code") |
51 | 46 |
|
52 | | - assert parse_error_code(user_message) == { |
53 | | - error_code, |
54 | | - } |
| 47 | + # 4. inform user (e.g. with new error or sending message) |
| 48 | + user_message = ( |
| 49 | + f"This is a user-friendly message to inform about an error. [{error_code}]" |
| 50 | + ) |
| 51 | + |
| 52 | + assert parse_error_code(user_message) == { |
| 53 | + error_code, |
| 54 | + } |
0 commit comments