|
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