|
10 | 10 |
|
11 | 11 |
|
12 | 12 | @pytest.mark.parametrize( |
13 | | - "test_name, input_date, date_format, expected_output_date", |
| 13 | + "input_date, date_format, expected_output_date", |
14 | 14 | [ |
15 | 15 | ( |
16 | | - "test_parse_date_iso", |
17 | 16 | "2021-01-01T00:00:00.000000+0000", |
18 | 17 | "%Y-%m-%dT%H:%M:%S.%f%z", |
19 | 18 | datetime.datetime(2021, 1, 1, 0, 0, tzinfo=datetime.timezone.utc), |
20 | 19 | ), |
21 | 20 | ( |
22 | | - "test_parse_date_iso_with_timezone_not_utc", |
23 | 21 | "2021-01-01T00:00:00.000000+0400", |
24 | 22 | "%Y-%m-%dT%H:%M:%S.%f%z", |
25 | 23 | datetime.datetime( |
26 | 24 | 2021, 1, 1, 0, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=14400)) |
27 | 25 | ), |
28 | 26 | ), |
29 | 27 | ( |
30 | | - "test_parse_timestamp", |
31 | 28 | "1609459200", |
32 | 29 | "%s", |
33 | 30 | datetime.datetime(2021, 1, 1, 0, 0, tzinfo=datetime.timezone.utc), |
34 | 31 | ), |
35 | 32 | ( |
36 | | - "test_parse_timestamp_as_float", |
37 | 33 | "1675092508.873709", |
38 | 34 | "%s_as_float", |
39 | 35 | datetime.datetime(2023, 1, 30, 15, 28, 28, 873709, tzinfo=datetime.timezone.utc), |
40 | 36 | ), |
41 | 37 | ( |
42 | | - "test_parse_ms_timestamp", |
| 38 | + "1675092508873709", |
| 39 | + "%epoch_microseconds", |
| 40 | + datetime.datetime(2023, 1, 30, 15, 28, 28, 873709, tzinfo=datetime.timezone.utc), |
| 41 | + ), |
| 42 | + ( |
43 | 43 | "1609459200001", |
44 | 44 | "%ms", |
45 | 45 | datetime.datetime(2021, 1, 1, 0, 0, 0, 1000, tzinfo=datetime.timezone.utc), |
46 | 46 | ), |
47 | 47 | ( |
48 | | - "test_parse_date_ms", |
49 | 48 | "20210101", |
50 | 49 | "%Y%m%d", |
51 | 50 | datetime.datetime(2021, 1, 1, 0, 0, tzinfo=datetime.timezone.utc), |
52 | 51 | ), |
53 | 52 | ( |
54 | | - "test_parse_format_datetime_with__ms", |
55 | 53 | "2021-11-22T08:41:55.640Z", |
56 | 54 | "%Y-%m-%dT%H:%M:%S.%_msZ", |
57 | 55 | datetime.datetime(2021, 11, 22, 8, 41, 55, 640000, tzinfo=datetime.timezone.utc), |
58 | 56 | ), |
59 | 57 | ], |
| 58 | + ids=[ |
| 59 | + "test_parse_date_iso", |
| 60 | + "test_parse_date_iso_with_timezone_not_utc", |
| 61 | + "test_parse_timestamp", |
| 62 | + "test_parse_timestamp_as_float", |
| 63 | + "test_parse_timestamp_microseconds", |
| 64 | + "test_parse_ms_timestamp", |
| 65 | + "test_parse_date_ms", |
| 66 | + "test_parse_format_datetime_with__ms", |
| 67 | + ], |
60 | 68 | ) |
61 | | -def test_parse_date(test_name, input_date, date_format, expected_output_date): |
| 69 | +def test_parse_date(input_date: str, date_format: str, expected_output_date: datetime.datetime): |
62 | 70 | parser = DatetimeParser() |
63 | 71 | output_date = parser.parse(input_date, date_format) |
64 | 72 | assert output_date == expected_output_date |
65 | 73 |
|
66 | 74 |
|
67 | 75 | @pytest.mark.parametrize( |
68 | | - "test_name, input_dt, datetimeformat, expected_output", |
| 76 | + "input_dt, datetimeformat, expected_output", |
69 | 77 | [ |
70 | 78 | ( |
71 | | - "test_format_timestamp", |
72 | 79 | datetime.datetime(2021, 1, 1, 0, 0, tzinfo=datetime.timezone.utc), |
73 | 80 | "%s", |
74 | 81 | "1609459200", |
75 | 82 | ), |
76 | 83 | ( |
77 | | - "test_format_timestamp_ms", |
78 | 84 | datetime.datetime(2021, 1, 1, 0, 0, 0, 1000, tzinfo=datetime.timezone.utc), |
79 | 85 | "%ms", |
80 | 86 | "1609459200001", |
81 | 87 | ), |
82 | 88 | ( |
83 | | - "test_format_timestamp_as_float", |
84 | 89 | datetime.datetime(2023, 1, 30, 15, 28, 28, 873709, tzinfo=datetime.timezone.utc), |
85 | 90 | "%s_as_float", |
86 | 91 | "1675092508.873709", |
87 | 92 | ), |
88 | 93 | ( |
89 | | - "test_format_string", |
| 94 | + datetime.datetime(2023, 1, 30, 15, 28, 28, 873709, tzinfo=datetime.timezone.utc), |
| 95 | + "%epoch_microseconds", |
| 96 | + "1675092508873709", |
| 97 | + ), |
| 98 | + ( |
90 | 99 | datetime.datetime(2021, 1, 1, 0, 0, tzinfo=datetime.timezone.utc), |
91 | 100 | "%Y-%m-%d", |
92 | 101 | "2021-01-01", |
93 | 102 | ), |
94 | 103 | ( |
95 | | - "test_format_to_number", |
96 | 104 | datetime.datetime(2021, 1, 1, 0, 0, tzinfo=datetime.timezone.utc), |
97 | 105 | "%Y%m%d", |
98 | 106 | "20210101", |
99 | 107 | ), |
100 | 108 | ( |
101 | | - "test_parse_format_datetime_with__ms", |
102 | 109 | datetime.datetime(2021, 11, 22, 8, 41, 55, 640000, tzinfo=datetime.timezone.utc), |
103 | 110 | "%Y-%m-%dT%H:%M:%S.%_msZ", |
104 | 111 | "2021-11-22T08:41:55.640Z", |
105 | 112 | ), |
106 | 113 | ], |
| 114 | + ids=[ |
| 115 | + "test_format_timestamp", |
| 116 | + "test_format_timestamp_ms", |
| 117 | + "test_format_timestamp_as_float", |
| 118 | + "test_format_timestamp_microseconds", |
| 119 | + "test_format_string", |
| 120 | + "test_format_to_number", |
| 121 | + "test_parse_format_datetime_with__ms", |
| 122 | + ], |
107 | 123 | ) |
108 | | -def test_format_datetime(test_name, input_dt, datetimeformat, expected_output): |
| 124 | +def test_format_datetime(input_dt: datetime.datetime, datetimeformat: str, expected_output: str): |
109 | 125 | parser = DatetimeParser() |
110 | 126 | output_date = parser.format(input_dt, datetimeformat) |
111 | 127 | assert output_date == expected_output |
0 commit comments