assertman2 0.2.29__tar.gz → 0.3.0__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.
Files changed (69) hide show
  1. assertman2-0.3.0/PKG-INFO +6 -0
  2. {assertman2-0.2.29 → assertman2-0.3.0}/assertman/helpers/datetime_helper.py +43 -28
  3. {assertman2-0.2.29 → assertman2-0.3.0}/assertman/matchers/datetimes.py +4 -7
  4. assertman2-0.3.0/assertman2.egg-info/PKG-INFO +6 -0
  5. {assertman2-0.2.29 → assertman2-0.3.0}/setup.py +1 -1
  6. {assertman2-0.2.29 → assertman2-0.3.0}/tests/objects/test_5_datetime.py +77 -1
  7. assertman2-0.2.29/PKG-INFO +0 -13
  8. assertman2-0.2.29/assertman2.egg-info/PKG-INFO +0 -13
  9. {assertman2-0.2.29 → assertman2-0.3.0}/assertman/__init__.py +0 -0
  10. {assertman2-0.2.29 → assertman2-0.3.0}/assertman/assert_that.py +0 -0
  11. {assertman2-0.2.29 → assertman2-0.3.0}/assertman/assertable_mixin.py +0 -0
  12. {assertman2-0.2.29 → assertman2-0.3.0}/assertman/cerberus_wrapper/__init__.py +0 -0
  13. {assertman2-0.2.29 → assertman2-0.3.0}/assertman/cerberus_wrapper/assert_that.py +0 -0
  14. {assertman2-0.2.29 → assertman2-0.3.0}/assertman/cerberus_wrapper/mapping.py +0 -0
  15. {assertman2-0.2.29 → assertman2-0.3.0}/assertman/cerberus_wrapper/pretty_error.py +0 -0
  16. {assertman2-0.2.29 → assertman2-0.3.0}/assertman/cerberus_wrapper/validators.py +0 -0
  17. {assertman2-0.2.29 → assertman2-0.3.0}/assertman/helpers/__init__.py +0 -0
  18. {assertman2-0.2.29 → assertman2-0.3.0}/assertman/helpers/jsonpath_helper.py +0 -0
  19. {assertman2-0.2.29 → assertman2-0.3.0}/assertman/helpers/waiting_helper.py +0 -0
  20. {assertman2-0.2.29 → assertman2-0.3.0}/assertman/matchers/__init__.py +0 -0
  21. {assertman2-0.2.29 → assertman2-0.3.0}/assertman/matchers/dictionary.py +0 -0
  22. {assertman2-0.2.29 → assertman2-0.3.0}/assertman/matchers/logical.py +0 -0
  23. {assertman2-0.2.29 → assertman2-0.3.0}/assertman/matchers/numbers.py +0 -0
  24. {assertman2-0.2.29 → assertman2-0.3.0}/assertman/matchers/object.py +0 -0
  25. {assertman2-0.2.29 → assertman2-0.3.0}/assertman/matchers/sequence.py +0 -0
  26. {assertman2-0.2.29 → assertman2-0.3.0}/assertman/matchers/text.py +0 -0
  27. {assertman2-0.2.29 → assertman2-0.3.0}/assertman/objects/__init__.py +0 -0
  28. {assertman2-0.2.29 → assertman2-0.3.0}/assertman/objects/assertable_api_response.py +0 -0
  29. {assertman2-0.2.29 → assertman2-0.3.0}/assertman/objects/assertable_bool.py +0 -0
  30. {assertman2-0.2.29 → assertman2-0.3.0}/assertman/objects/assertable_datetime.py +0 -0
  31. {assertman2-0.2.29 → assertman2-0.3.0}/assertman/objects/assertable_dict.py +0 -0
  32. {assertman2-0.2.29 → assertman2-0.3.0}/assertman/objects/assertable_float.py +0 -0
  33. {assertman2-0.2.29 → assertman2-0.3.0}/assertman/objects/assertable_int.py +0 -0
  34. {assertman2-0.2.29 → assertman2-0.3.0}/assertman/objects/assertable_list.py +0 -0
  35. {assertman2-0.2.29 → assertman2-0.3.0}/assertman/objects/assertable_none.py +0 -0
  36. {assertman2-0.2.29 → assertman2-0.3.0}/assertman/objects/assertable_string.py +0 -0
  37. {assertman2-0.2.29 → assertman2-0.3.0}/assertman2.egg-info/SOURCES.txt +0 -0
  38. {assertman2-0.2.29 → assertman2-0.3.0}/assertman2.egg-info/dependency_links.txt +0 -0
  39. {assertman2-0.2.29 → assertman2-0.3.0}/assertman2.egg-info/requires.txt +0 -0
  40. {assertman2-0.2.29 → assertman2-0.3.0}/assertman2.egg-info/top_level.txt +0 -0
  41. {assertman2-0.2.29 → assertman2-0.3.0}/docs/__init__.py +0 -0
  42. {assertman2-0.2.29 → assertman2-0.3.0}/setup.cfg +0 -0
  43. {assertman2-0.2.29 → assertman2-0.3.0}/tests/__init__.py +0 -0
  44. {assertman2-0.2.29 → assertman2-0.3.0}/tests/conftest.py +0 -0
  45. {assertman2-0.2.29 → assertman2-0.3.0}/tests/extra/__init__.py +0 -0
  46. {assertman2-0.2.29 → assertman2-0.3.0}/tests/extra/dict/__init__.py +0 -0
  47. {assertman2-0.2.29 → assertman2-0.3.0}/tests/extra/dict/test_dict_extract.py +0 -0
  48. {assertman2-0.2.29 → assertman2-0.3.0}/tests/extra/dict/test_jsonpatch.py +0 -0
  49. {assertman2-0.2.29 → assertman2-0.3.0}/tests/extra/list/__init__.py +0 -0
  50. {assertman2-0.2.29 → assertman2-0.3.0}/tests/extra/list/test_list_filter.py +0 -0
  51. {assertman2-0.2.29 → assertman2-0.3.0}/tests/extra/list/test_list_find.py +0 -0
  52. {assertman2-0.2.29 → assertman2-0.3.0}/tests/extra/list/test_list_get_by_index.py +0 -0
  53. {assertman2-0.2.29 → assertman2-0.3.0}/tests/extra/response/__init__.py +0 -0
  54. {assertman2-0.2.29 → assertman2-0.3.0}/tests/extra/response/test_request.py +0 -0
  55. {assertman2-0.2.29 → assertman2-0.3.0}/tests/new/__init__.py +0 -0
  56. {assertman2-0.2.29 → assertman2-0.3.0}/tests/new/pretty.py +0 -0
  57. {assertman2-0.2.29 → assertman2-0.3.0}/tests/new/prettylist.py +0 -0
  58. {assertman2-0.2.29 → assertman2-0.3.0}/tests/objects/__init__.py +0 -0
  59. {assertman2-0.2.29 → assertman2-0.3.0}/tests/objects/test_1_integer.py +0 -0
  60. {assertman2-0.2.29 → assertman2-0.3.0}/tests/objects/test_2_string.py +0 -0
  61. {assertman2-0.2.29 → assertman2-0.3.0}/tests/objects/test_3_1_list.py +0 -0
  62. {assertman2-0.2.29 → assertman2-0.3.0}/tests/objects/test_3_2_list_with_dicts.py +0 -0
  63. {assertman2-0.2.29 → assertman2-0.3.0}/tests/objects/test_4_1_dict.py +0 -0
  64. {assertman2-0.2.29 → assertman2-0.3.0}/tests/objects/test_4_2_dict_with_lists_has_length.py +0 -0
  65. {assertman2-0.2.29 → assertman2-0.3.0}/tests/objects/test_4_3_dict_with_lists_has_item.py +0 -0
  66. {assertman2-0.2.29 → assertman2-0.3.0}/tests/objects/test_4_4_dict_has_key.py +0 -0
  67. {assertman2-0.2.29 → assertman2-0.3.0}/tests/objects/test_4_5_dict_with_lists_every_item.py +0 -0
  68. {assertman2-0.2.29 → assertman2-0.3.0}/tests/temp_test_validate_schema.py +0 -0
  69. {assertman2-0.2.29 → assertman2-0.3.0}/tests/utils.py +0 -0
@@ -0,0 +1,6 @@
1
+ Metadata-Version: 2.1
2
+ Name: assertman2
3
+ Version: 0.3.0
4
+ Classifier: Programming Language :: Python :: 3
5
+ Classifier: License :: OSI Approved :: MIT License
6
+ Classifier: Operating System :: OS Independent
@@ -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
- r"-(0[1-9]|1[012])"\
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", "regexp": r"(0\d|1\d|2\d|3[01])"
79
- r".(0[1-9]|1[012])"
80
- r".((19[789]|2\d\d)\d)"
81
- r"\s([01]\d|2[0-3])"
82
- r":([0-5]\d)"
83
- r":([0-5]\d)"},
84
- {"format": "%Y-%m-%d %H:%M:%S", "regexp": r"((19[789]|2\d\d)\d)"
85
- r"-(0[1-9]|1[012])"
86
- r"-(0\d|1\d|2\d|3[01])"
87
- r"\s([01]\d|2[0-3])"
88
- r":([0-5]\d)"
89
- r":([0-5]\d)"},
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.__fromisoformat()
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
- def __fromisoformat(self):
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
  """
@@ -0,0 +1,6 @@
1
+ Metadata-Version: 2.1
2
+ Name: assertman2
3
+ Version: 0.3.0
4
+ Classifier: Programming Language :: Python :: 3
5
+ Classifier: License :: OSI Approved :: MIT License
6
+ Classifier: Operating System :: OS Independent
@@ -5,7 +5,7 @@ from setuptools import find_packages, setup
5
5
 
6
6
  setup(
7
7
  name="assertman2",
8
- version="0.2.29",
8
+ version="0.3.00",
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",
@@ -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