assertman2 0.2.29__tar.gz → 0.3.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- assertman2-0.3.1/PKG-INFO +6 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/assertman/helpers/datetime_helper.py +43 -28
- {assertman2-0.2.29 → assertman2-0.3.1}/assertman/matchers/datetimes.py +4 -7
- assertman2-0.3.1/assertman2.egg-info/PKG-INFO +6 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/setup.py +1 -1
- {assertman2-0.2.29 → assertman2-0.3.1}/tests/objects/test_5_datetime.py +77 -1
- assertman2-0.2.29/PKG-INFO +0 -13
- assertman2-0.2.29/assertman2.egg-info/PKG-INFO +0 -13
- {assertman2-0.2.29 → assertman2-0.3.1}/assertman/__init__.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/assertman/assert_that.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/assertman/assertable_mixin.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/assertman/cerberus_wrapper/__init__.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/assertman/cerberus_wrapper/assert_that.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/assertman/cerberus_wrapper/mapping.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/assertman/cerberus_wrapper/pretty_error.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/assertman/cerberus_wrapper/validators.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/assertman/helpers/__init__.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/assertman/helpers/jsonpath_helper.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/assertman/helpers/waiting_helper.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/assertman/matchers/__init__.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/assertman/matchers/dictionary.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/assertman/matchers/logical.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/assertman/matchers/numbers.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/assertman/matchers/object.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/assertman/matchers/sequence.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/assertman/matchers/text.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/assertman/objects/__init__.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/assertman/objects/assertable_api_response.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/assertman/objects/assertable_bool.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/assertman/objects/assertable_datetime.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/assertman/objects/assertable_dict.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/assertman/objects/assertable_float.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/assertman/objects/assertable_int.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/assertman/objects/assertable_list.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/assertman/objects/assertable_none.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/assertman/objects/assertable_string.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/assertman2.egg-info/SOURCES.txt +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/assertman2.egg-info/dependency_links.txt +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/assertman2.egg-info/requires.txt +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/assertman2.egg-info/top_level.txt +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/docs/__init__.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/setup.cfg +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/tests/__init__.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/tests/conftest.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/tests/extra/__init__.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/tests/extra/dict/__init__.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/tests/extra/dict/test_dict_extract.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/tests/extra/dict/test_jsonpatch.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/tests/extra/list/__init__.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/tests/extra/list/test_list_filter.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/tests/extra/list/test_list_find.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/tests/extra/list/test_list_get_by_index.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/tests/extra/response/__init__.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/tests/extra/response/test_request.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/tests/new/__init__.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/tests/new/pretty.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/tests/new/prettylist.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/tests/objects/__init__.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/tests/objects/test_1_integer.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/tests/objects/test_2_string.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/tests/objects/test_3_1_list.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/tests/objects/test_3_2_list_with_dicts.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/tests/objects/test_4_1_dict.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/tests/objects/test_4_2_dict_with_lists_has_length.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/tests/objects/test_4_3_dict_with_lists_has_item.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/tests/objects/test_4_4_dict_has_key.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/tests/objects/test_4_5_dict_with_lists_every_item.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/tests/temp_test_validate_schema.py +0 -0
- {assertman2-0.2.29 → assertman2-0.3.1}/tests/utils.py +0 -0
|
@@ -54,6 +54,7 @@ class DateTimeApi:
|
|
|
54
54
|
# часов на 13 и минут на 40
|
|
55
55
|
# в datetime формате
|
|
56
56
|
"""
|
|
57
|
+
|
|
57
58
|
def __init__(self, date_time=None):
|
|
58
59
|
self.date_time = date_time
|
|
59
60
|
self.date_format_error = f"Значение <{self.date_time}> не является датой ни в одном из доступных форматов. " \
|
|
@@ -66,27 +67,48 @@ class DateTimeApi:
|
|
|
66
67
|
r":([0-5]\d)" \
|
|
67
68
|
r":([0-5]\d)"
|
|
68
69
|
|
|
69
|
-
self.cms_format = "%Y-%m-%dT%H:%M:%S"
|
|
70
|
-
self.cms_format_regexp = r"((19[789]|2\d\d)\d)"
|
|
71
|
-
|
|
72
|
-
r"-(0\d|1\d|2\d|3[01])"\
|
|
73
|
-
r"T([01]\d|2[0-3])"\
|
|
74
|
-
r":([0-5]\d):([0-5]\d)"
|
|
70
|
+
self.cms_format = "%Y-%m-%dT%H:%M:%S.%f%z"
|
|
71
|
+
self.cms_format_regexp = (r"^((19[789]|2\d\d)\d)-(0[1-9]|1[012])-(0\d|1\d|2\d|3[01])"
|
|
72
|
+
r"T([01]\d|2[0-3]):([0-5]\d):([0-5]\d)?(.(?!0+$)\d{1,6})[+-](0\d|1[01234]):[03]0$")
|
|
75
73
|
|
|
76
74
|
# Здесь можно задавать нужные для использования форматы даты
|
|
77
75
|
# Тогда они будут автоматически конвертироваться в требуемый формат
|
|
78
|
-
self.custom_date_formats = [{"format": "%d.%m.%Y %H:%M:%S",
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
76
|
+
self.custom_date_formats = [{"format": "%d.%m.%Y %H:%M:%S",
|
|
77
|
+
"regexp": r"(0\d|1\d|2\d|3[01])"
|
|
78
|
+
r".(0[1-9]|1[012])"
|
|
79
|
+
r".((19[789]|2\d\d)\d)"
|
|
80
|
+
r"\s([01]\d|2[0-3])"
|
|
81
|
+
r":([0-5]\d)"
|
|
82
|
+
r":([0-5]\d)"},
|
|
83
|
+
|
|
84
|
+
{"format": "%Y-%m-%d %H:%M:%S",
|
|
85
|
+
"regexp": r"((19[789]|2\d\d)\d)"
|
|
86
|
+
r"-(0[1-9]|1[012])"
|
|
87
|
+
r"-(0\d|1\d|2\d|3[01])"
|
|
88
|
+
r"\s([01]\d|2[0-3])"
|
|
89
|
+
r":([0-5]\d)"
|
|
90
|
+
r":([0-5]\d)"},
|
|
91
|
+
|
|
92
|
+
{"format": "%Y-%m-%dT%H:%M:%S",
|
|
93
|
+
"regexp": r"^((19[789]|2\d\d)\d)"
|
|
94
|
+
r"-(0[1-9]|1[012])"
|
|
95
|
+
r"-(0\d|1\d|2\d|3[01])"
|
|
96
|
+
r"T([01]\d|2[0-3])"
|
|
97
|
+
r":([0-5]\d):([0-5]\d)$"},
|
|
98
|
+
|
|
99
|
+
{"format": "%Y-%m-%dT%H:%M:%S.%f",
|
|
100
|
+
"regexp": r"^((19[789]|2\d\d)\d)"
|
|
101
|
+
r"-(0[1-9]|1[012])"
|
|
102
|
+
r"-(0\d|1\d|2\d|3[01])T"
|
|
103
|
+
r"([01]\d|2[0-3])"
|
|
104
|
+
r":([0-5]\d):([0-5]\d)\.(?!0+$)\d{1,6}"},
|
|
105
|
+
|
|
106
|
+
{"format": "%Y-%m-%d %H:%M:%S.%f",
|
|
107
|
+
"regexp": r"^((19[789]|2\d\d)\d)"
|
|
108
|
+
r"-(0[1-9]|1[012])"
|
|
109
|
+
r"-(0\d|1\d|2\d|3[01])."
|
|
110
|
+
r"([01]\d|2[0-3])"
|
|
111
|
+
r":([0-5]\d):([0-5]\d)\.(?!0+$)\d{1,6}$"},
|
|
90
112
|
]
|
|
91
113
|
|
|
92
114
|
self.custom_date_format = None
|
|
@@ -137,7 +159,7 @@ class DateTimeApi:
|
|
|
137
159
|
elif self.is_sdp_date():
|
|
138
160
|
return datetime.strptime(self.date_time, self.sdp_format)
|
|
139
161
|
elif self.is_cms_date():
|
|
140
|
-
return self.
|
|
162
|
+
return datetime.fromisoformat(self.date_time)
|
|
141
163
|
elif self.is_timestamp_date():
|
|
142
164
|
return datetime.fromtimestamp(int(self.date_time))
|
|
143
165
|
elif self.is_date_in_one_of_custom_formats():
|
|
@@ -226,15 +248,8 @@ class DateTimeApi:
|
|
|
226
248
|
Пример: "%Y-%m-%d %H:%M:%S" - (год-месяц-день часы:минуты:секунды)
|
|
227
249
|
"""
|
|
228
250
|
return self.to_datetime_format().strftime(date_format)
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
"""Функция преобразования из ISO формат в datetime
|
|
232
|
-
P.S. для обратной совместимости с 3.6 пришлось писать свою версию datetime.fromisoformat()"""
|
|
233
|
-
try:
|
|
234
|
-
return datetime.strptime(self.date_time, '%Y-%m-%dT%H:%M:%S.%f')
|
|
235
|
-
except ValueError as e:
|
|
236
|
-
return datetime.strptime(self.date_time, '%Y-%m-%dT%H:%M:%S')
|
|
237
|
-
|
|
251
|
+
|
|
252
|
+
|
|
238
253
|
# ------------------ Экземпляры класса DateTimeApi для упрощённого использования --------------
|
|
239
254
|
|
|
240
255
|
today = DateTimeApi().today()
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
from hamcrest.core.base_matcher import BaseMatcher
|
|
2
2
|
from assertman.helpers.datetime_helper import DateTimeApi
|
|
3
3
|
|
|
4
|
-
|
|
5
4
|
""" Библиотека кастомных матчеров для сравнения дат
|
|
6
5
|
Сравнение доступно для дат в трех форматах: объект datetime, timestamp (str, int, float) и sdp
|
|
7
6
|
Если хотя бы одно из сравниваемых значений не соответствует одному из этих форматов, возникает исключение
|
|
@@ -29,15 +28,13 @@ from assertman.helpers.datetime_helper import DateTimeApi
|
|
|
29
28
|
|
|
30
29
|
* assert_that(date1, is_less_than_date(date2)) # является ли date1 меньше (раньше) date2
|
|
31
30
|
|
|
32
|
-
* assert_that(date1, is_equal_to_date(date2)) # равны ли даты date1 и date2
|
|
31
|
+
* assert_that(date1, is_equal_to_date(date2)) # равны ли даты date1 и date2.
|
|
33
32
|
|
|
34
33
|
* assert_that(value, is_date()) # является ли value датой в одном из доступных форматов:
|
|
35
34
|
# SDP-дата, datetime, timestamp в int, float или str
|
|
36
35
|
"""
|
|
37
36
|
|
|
38
37
|
|
|
39
|
-
|
|
40
|
-
|
|
41
38
|
class DateComparison(BaseMatcher):
|
|
42
39
|
""" Матчер сравнения дат """
|
|
43
40
|
|
|
@@ -118,7 +115,7 @@ class DateComparison(BaseMatcher):
|
|
|
118
115
|
|
|
119
116
|
|
|
120
117
|
def is_greater_than_datetime(date_time):
|
|
121
|
-
""" Проверить, является ли проверяемая дата позже, чем переданная (с учетом
|
|
118
|
+
""" Проверить, является ли проверяемая дата позже, чем переданная (с учетом времени)
|
|
122
119
|
Пример использования:
|
|
123
120
|
assert_that(date1, is_greater_than_datetime(date2))
|
|
124
121
|
"""
|
|
@@ -126,7 +123,7 @@ def is_greater_than_datetime(date_time):
|
|
|
126
123
|
|
|
127
124
|
|
|
128
125
|
def is_less_than_datetime(date_time):
|
|
129
|
-
""" Проверить, является ли проверяемая дата раньше, чем переданная (с учетом
|
|
126
|
+
""" Проверить, является ли проверяемая дата раньше, чем переданная (с учетом времени)
|
|
130
127
|
Пример использования:
|
|
131
128
|
assert_that(date1, is_less_than_datetime(date2))
|
|
132
129
|
"""
|
|
@@ -134,7 +131,7 @@ def is_less_than_datetime(date_time):
|
|
|
134
131
|
|
|
135
132
|
|
|
136
133
|
def is_equal_to_datetime(date_time):
|
|
137
|
-
""" Проверить даты на
|
|
134
|
+
""" Проверить даты на соответстие
|
|
138
135
|
Пример использования:
|
|
139
136
|
assert_that(date1, is_equal_to_datetime(date2))
|
|
140
137
|
"""
|
|
@@ -5,7 +5,7 @@ from setuptools import find_packages, setup
|
|
|
5
5
|
|
|
6
6
|
setup(
|
|
7
7
|
name="assertman2",
|
|
8
|
-
version="0.
|
|
8
|
+
version="0.3.01",
|
|
9
9
|
# author="Maxim Kuznetsov",
|
|
10
10
|
# author_email="7473233@gmail.com",
|
|
11
11
|
# description="A utility package for making better test assertions in api tests",
|
|
@@ -10,6 +10,10 @@ from assertman.matchers import *
|
|
|
10
10
|
'03/13/2019 08:58:59',
|
|
11
11
|
'15.11.2021 12:15:56',
|
|
12
12
|
'2021-11-15 12:15:56',
|
|
13
|
+
'2021-11-15T12:15:56+03:00',
|
|
14
|
+
'2021-11-15T12:15:56.123456+14:00',
|
|
15
|
+
'2021-11-15T12:15:56.000001+10:30',
|
|
16
|
+
'2021-11-15T12:15:56.123456-12:00',
|
|
13
17
|
])
|
|
14
18
|
def test_is_date(date):
|
|
15
19
|
assert that(date).should(is_date())
|
|
@@ -21,6 +25,13 @@ def test_is_date(date):
|
|
|
21
25
|
'03/13/2019 08:58:59.99',
|
|
22
26
|
'15.11.2021 12:15:56.000',
|
|
23
27
|
'2021-11-15 12:15:56.0',
|
|
28
|
+
'2021-11-15 12:15:56.0+03:00',
|
|
29
|
+
'2021-11-15 12:15:56.000000+03:00',
|
|
30
|
+
'2021-11-15T12:15:56+03:0',
|
|
31
|
+
'2021-11-15T12:15:56+030',
|
|
32
|
+
'2021-11-15T12:15:56.123456+03',
|
|
33
|
+
'2021-11-15T12:15:56.123456+15:00',
|
|
34
|
+
'2021-11-15T12:15:56.123456+0300',
|
|
24
35
|
])
|
|
25
36
|
def test_is_date_negative(date):
|
|
26
37
|
with pytest.raises(AssertionError) as excinfo:
|
|
@@ -34,12 +45,20 @@ def test_is_date_negative(date):
|
|
|
34
45
|
"%Y-%m-%dT%H:%M:%S",
|
|
35
46
|
"%d.%m.%Y %H:%M:%S",
|
|
36
47
|
"%Y-%m-%d %H:%M:%S",
|
|
48
|
+
"%Y-%m-%d %H:%M:%S.%f",
|
|
49
|
+
"%Y-%m-%dT%H:%M:%S.%f",
|
|
37
50
|
])
|
|
38
51
|
def test_is_today(date_format, hours_delta):
|
|
39
52
|
result_dt = (dt.today() + timedelta(hours=hours_delta)).strftime(date_format)
|
|
40
53
|
assert that(result_dt).should(is_today())
|
|
41
54
|
|
|
42
55
|
|
|
56
|
+
@pytest.mark.parametrize("hours_delta", [-1, 0, 1])
|
|
57
|
+
def test_is_today_with_tz(hours_delta):
|
|
58
|
+
result_dt = (dt.now().astimezone() + timedelta(hours=hours_delta)).isoformat()
|
|
59
|
+
assert that(result_dt).should(is_today())
|
|
60
|
+
|
|
61
|
+
|
|
43
62
|
@pytest.mark.parametrize(" days_delta", [-1, 1])
|
|
44
63
|
@pytest.mark.parametrize('date_format', [
|
|
45
64
|
"%m/%d/%Y %H:%M:%S",
|
|
@@ -66,6 +85,12 @@ def test_is_tomorrow(date_format, hours_delta):
|
|
|
66
85
|
assert that(result_dt).should(is_tomorrow())
|
|
67
86
|
|
|
68
87
|
|
|
88
|
+
@pytest.mark.parametrize("hours_delta", [-1, 0, 1])
|
|
89
|
+
def test_is_tomorrow_with_tz(hours_delta):
|
|
90
|
+
result_dt = (dt.now().astimezone() + timedelta(days=1, hours=hours_delta)).isoformat()
|
|
91
|
+
assert that(result_dt).should(is_tomorrow())
|
|
92
|
+
|
|
93
|
+
|
|
69
94
|
@pytest.mark.parametrize(" days_delta", [0, 2])
|
|
70
95
|
@pytest.mark.parametrize('date_format', [
|
|
71
96
|
"%m/%d/%Y %H:%M:%S",
|
|
@@ -92,6 +117,12 @@ def test_is_yesterday(date_format, hours_delta):
|
|
|
92
117
|
assert that(result_dt).should(is_yesterday())
|
|
93
118
|
|
|
94
119
|
|
|
120
|
+
@pytest.mark.parametrize("hours_delta", [-1, 0, +1])
|
|
121
|
+
def test_is_yesterday_with_tz(hours_delta):
|
|
122
|
+
result_dt = (dt.now().astimezone() + timedelta(days=-1, hours=hours_delta)).isoformat()
|
|
123
|
+
assert that(result_dt).should(is_yesterday())
|
|
124
|
+
|
|
125
|
+
|
|
95
126
|
@pytest.mark.parametrize("days_delta", [-2, 0])
|
|
96
127
|
@pytest.mark.parametrize('date_format', [
|
|
97
128
|
"%m/%d/%Y %H:%M:%S",
|
|
@@ -128,6 +159,22 @@ def test_is_today_with_shift(date_format, shift_delta):
|
|
|
128
159
|
assert that(result_dt).should(is_today_with_shift(**shift_delta))
|
|
129
160
|
|
|
130
161
|
|
|
162
|
+
@pytest.mark.parametrize("shift_delta", [
|
|
163
|
+
{"weeks": 1},
|
|
164
|
+
{"weeks": 0},
|
|
165
|
+
{"weeks": -1},
|
|
166
|
+
{"days": 1},
|
|
167
|
+
{"days": 0},
|
|
168
|
+
{"days": -1},
|
|
169
|
+
{"hours": 1},
|
|
170
|
+
{"hours": 0},
|
|
171
|
+
{"hours": -1},
|
|
172
|
+
])
|
|
173
|
+
def test_is_today_with_shift_and_tz(shift_delta):
|
|
174
|
+
result_dt = (dt.now().astimezone() + timedelta(**shift_delta)).isoformat()
|
|
175
|
+
assert that(result_dt).should(is_today_with_shift(**shift_delta))
|
|
176
|
+
|
|
177
|
+
|
|
131
178
|
@pytest.mark.parametrize("shift_delta, expected_delta", [
|
|
132
179
|
({"weeks": 1}, {"weeks": 2}),
|
|
133
180
|
({"weeks": 0}, {"weeks": -1}),
|
|
@@ -157,6 +204,7 @@ def test_is_today_with_shift_negative_1(date_format, shift_delta, expected_delta
|
|
|
157
204
|
"%Y-%m-%dT%H:%M:%S",
|
|
158
205
|
"%d.%m.%Y %H:%M:%S",
|
|
159
206
|
"%Y-%m-%d %H:%M:%S",
|
|
207
|
+
"%Y-%m-%dT%H:%M:%S.%f",
|
|
160
208
|
])
|
|
161
209
|
def test_is_greater_than_datetime(date_format):
|
|
162
210
|
expected_datetime = dt.today().strftime(date_format)
|
|
@@ -164,6 +212,12 @@ def test_is_greater_than_datetime(date_format):
|
|
|
164
212
|
assert that(result_datetime).should(is_greater_than_datetime(expected_datetime))
|
|
165
213
|
|
|
166
214
|
|
|
215
|
+
def test_is_greater_than_datetime_with_tz():
|
|
216
|
+
expected_datetime = dt.now().astimezone().isoformat()
|
|
217
|
+
result_datetime = (dt.now().astimezone() + timedelta(milliseconds=1)).isoformat()
|
|
218
|
+
assert that(result_datetime).should(is_greater_than_datetime(expected_datetime))
|
|
219
|
+
|
|
220
|
+
|
|
167
221
|
@pytest.mark.parametrize('date_format', [
|
|
168
222
|
"%m/%d/%Y %H:%M:%S",
|
|
169
223
|
"%Y-%m-%dT%H:%M:%S",
|
|
@@ -183,6 +237,7 @@ def test_is_greater_than_datetime_negative_1(date_format):
|
|
|
183
237
|
"%Y-%m-%dT%H:%M:%S",
|
|
184
238
|
"%d.%m.%Y %H:%M:%S",
|
|
185
239
|
"%Y-%m-%d %H:%M:%S",
|
|
240
|
+
"%Y-%m-%dT%H:%M:%S.%f",
|
|
186
241
|
])
|
|
187
242
|
def test_is_less_than_datetime(date_format):
|
|
188
243
|
expected_datetime = dt.today().strftime(date_format)
|
|
@@ -190,6 +245,12 @@ def test_is_less_than_datetime(date_format):
|
|
|
190
245
|
assert that(result_datetime).should(is_less_than_datetime(expected_datetime))
|
|
191
246
|
|
|
192
247
|
|
|
248
|
+
def test_is_less_than_datetime_with_tz():
|
|
249
|
+
expected_datetime = dt.now().astimezone().isoformat()
|
|
250
|
+
result_datetime = (dt.now().astimezone() - timedelta(milliseconds=1)).isoformat()
|
|
251
|
+
assert that(result_datetime).should(is_less_than_datetime(expected_datetime))
|
|
252
|
+
|
|
253
|
+
|
|
193
254
|
@pytest.mark.parametrize('date_format', [
|
|
194
255
|
"%m/%d/%Y %H:%M:%S",
|
|
195
256
|
"%Y-%m-%dT%H:%M:%S",
|
|
@@ -208,7 +269,6 @@ def test_is_less_than_datetime_negative_1(date_format):
|
|
|
208
269
|
@pytest.mark.parametrize('date_format', [
|
|
209
270
|
"%m/%d/%Y %H:%M:%S",
|
|
210
271
|
"%Y-%m-%dT%H:%M:%S",
|
|
211
|
-
# TODO "%Y-%m-%dT%H:%M:%S.%f",
|
|
212
272
|
"%d.%m.%Y %H:%M:%S",
|
|
213
273
|
"%Y-%m-%d %H:%M:%S",
|
|
214
274
|
])
|
|
@@ -218,6 +278,14 @@ def test_is_equal_to_datetime(date_format, mseconds_delta):
|
|
|
218
278
|
assert that(result_datetime).should(is_equal_to_datetime(expected_datetime))
|
|
219
279
|
|
|
220
280
|
|
|
281
|
+
def test_is_equal_to_datetime_with_tz():
|
|
282
|
+
# Сравниваю два одинаковых объекта потому что при генерации в тесте происходит сдвиг в миллисекундах
|
|
283
|
+
# и сравнение некорректно
|
|
284
|
+
expected_datetime = dt.now().isoformat()
|
|
285
|
+
result_datetime = expected_datetime
|
|
286
|
+
assert that(result_datetime).should(is_equal_to_datetime(expected_datetime))
|
|
287
|
+
|
|
288
|
+
|
|
221
289
|
@pytest.mark.parametrize("seconds_delta", [-1, 1])
|
|
222
290
|
@pytest.mark.parametrize('date_format', [
|
|
223
291
|
"%m/%d/%Y %H:%M:%S",
|
|
@@ -324,6 +392,14 @@ def test_close_to_datetime(date_format, seconds_delta):
|
|
|
324
392
|
assert that(result_datetime).should(close_to_datetime(expected_datetime, seconds=abs(seconds_delta)))
|
|
325
393
|
|
|
326
394
|
|
|
395
|
+
@pytest.mark.parametrize("seconds_delta", [-3, 3])
|
|
396
|
+
def test_close_to_datetime_with_tz(seconds_delta):
|
|
397
|
+
result_datetime = dt.now().astimezone().isoformat()
|
|
398
|
+
expected_datetime = (dt.now().astimezone() + timedelta(seconds=seconds_delta)).isoformat()
|
|
399
|
+
# Допустимая дельта 4 секунды потому что помимо seconds_delta добавляются еще миллисекунды при прохождении теста
|
|
400
|
+
assert that(result_datetime).should(close_to_datetime(expected_datetime, seconds=4))
|
|
401
|
+
|
|
402
|
+
|
|
327
403
|
@pytest.mark.parametrize("seconds_delta", [-3, 3])
|
|
328
404
|
@pytest.mark.parametrize('date_format', [
|
|
329
405
|
"%m/%d/%Y %H:%M:%S",
|
assertman2-0.2.29/PKG-INFO
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 1.1
|
|
2
|
-
Name: assertman2
|
|
3
|
-
Version: 0.2.29
|
|
4
|
-
Summary: UNKNOWN
|
|
5
|
-
Home-page: UNKNOWN
|
|
6
|
-
Author: UNKNOWN
|
|
7
|
-
Author-email: UNKNOWN
|
|
8
|
-
License: UNKNOWN
|
|
9
|
-
Description: UNKNOWN
|
|
10
|
-
Platform: UNKNOWN
|
|
11
|
-
Classifier: Programming Language :: Python :: 3
|
|
12
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
13
|
-
Classifier: Operating System :: OS Independent
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 1.1
|
|
2
|
-
Name: assertman2
|
|
3
|
-
Version: 0.2.29
|
|
4
|
-
Summary: UNKNOWN
|
|
5
|
-
Home-page: UNKNOWN
|
|
6
|
-
Author: UNKNOWN
|
|
7
|
-
Author-email: UNKNOWN
|
|
8
|
-
License: UNKNOWN
|
|
9
|
-
Description: UNKNOWN
|
|
10
|
-
Platform: UNKNOWN
|
|
11
|
-
Classifier: Programming Language :: Python :: 3
|
|
12
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
13
|
-
Classifier: Operating System :: OS Independent
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|