Skip to content

Commit 9742b56

Browse files
Merge pull request #34 from anatoly-kor/update-tests
Update tests and assert messages
2 parents b9c25e0 + 1dae853 commit 9742b56

2 files changed

Lines changed: 32 additions & 58 deletions

File tree

tests/conftest.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,5 @@ def __enter__(self):
2323

2424
def __exit__(self, *args):
2525
self.extend(self._stringio.getvalue().splitlines())
26-
del self._stringio # free up some memory
26+
del self._stringio
2727
sys.stdout = self._stdout
28-
29-
30-
def pytest_make_parametrize_id(config, val):
31-
return repr(val)
32-

tests/test_homework.py

Lines changed: 31 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import re
12
import pytest
23
import types
34
import inspect
@@ -7,8 +8,9 @@
78
import homework
89
except ModuleNotFoundError:
910
assert False, 'Не найден файл с домашней работой `homework.py`'
10-
except NameError:
11-
assert False, 'Файл с домашней работой должен называться `homework.py`'
11+
except NameError as exc:
12+
name = re.findall("name '(\w+)' is not defined", str(exc))[0]
13+
assert False, f'Класс {name} не обнаружен в файле домашней работы.'
1214
except ImportError:
1315
assert False, 'Не найден файл с домашней работой `homework.py`'
1416

@@ -19,10 +21,10 @@ def test_read_package():
1921
'входящего пакета - `read_package`'
2022
)
2123
assert callable(homework.read_package), (
22-
'`read_package` должна быть функцией.'
24+
'Проверьте, что `read_package` - это функция.'
2325
)
2426
assert isinstance(homework.read_package, types.FunctionType), (
25-
'`read_package` должна быть функцией.'
27+
'Проверьте, что `read_package` - это функция.'
2628
)
2729

2830

@@ -40,9 +42,8 @@ def test_read_package_return(input_data, expected):
4042

4143

4244
def test_InfoMessage():
43-
assert hasattr(homework, 'InfoMessage'), 'Создайте класс `InfoMessage`'
4445
assert inspect.isclass(homework.InfoMessage), (
45-
'`InfoMessage` должен быть классом.'
46+
'Проверьте, что `InfoMessage` - это класс.'
4647
)
4748
info_message = homework.InfoMessage
4849
info_message_signature = inspect.signature(info_message)
@@ -79,12 +80,12 @@ def test_InfoMessage():
7980
])
8081
def test_InfoMessage_get_message(input_data, expected):
8182
info_message = homework.InfoMessage(*input_data)
82-
assert callable(info_message.get_message), (
83-
'Создайте метод `get_message` в классе `InfoMessage`.'
84-
)
8583
assert hasattr(info_message, 'get_message'), (
8684
'Создайте метод `get_message` в классе `InfoMessage`.'
8785
)
86+
assert callable(info_message.get_message), (
87+
'Проверьте, что `get_message` в классе `InfoMessage` - это метод.'
88+
)
8889
result = info_message.get_message()
8990
assert isinstance(result, str), (
9091
'Метод `get_message` в классе `InfoMessage`'
@@ -102,9 +103,8 @@ def test_InfoMessage_get_message(input_data, expected):
102103

103104

104105
def test_Training():
105-
assert hasattr(homework, 'Training'), 'Создайте класс `Training`'
106106
assert inspect.isclass(homework.Training), (
107-
'`Training` должен быть классом.'
107+
'Проверьте, что `Training` - это класс.'
108108
)
109109
training = homework.Training
110110
training_signature = inspect.signature(training)
@@ -140,12 +140,12 @@ def test_Training_get_distance(input_data, expected):
140140
'Создайте метод `get_distance` в классе `Training`.'
141141
)
142142
result = training.get_distance()
143-
assert isinstance(result, float), (
143+
assert type(result) == float, (
144144
'Метод `get_distance` в классе `Trainig`'
145145
'должен возвращать значение типа `float`'
146146
)
147147
assert result == expected, (
148-
'Проверьте корректность формулы подсчета дистанции класса `Training`'
148+
'Проверьте формулу подсчета дистанции класса `Training`'
149149
)
150150

151151

@@ -160,13 +160,13 @@ def test_Training_get_mean_speed(input_data, expected):
160160
'Создайте метод `get_mean_speed` в классе `Training`.'
161161
)
162162
result = training.get_mean_speed()
163-
assert isinstance(result, float), (
163+
assert type(result) == float, (
164164
'Метод `get_mean_speed` в классе `Training`'
165165
'должен возвращать значение типа `float`'
166166
)
167167
assert result == expected, (
168-
'Проверьте формулу подсчета средней скорости движения '
169-
'класса `Training`'
168+
'Проверьте формулу подсчёта средней скорости движения '
169+
'в классе `Training`'
170170
)
171171

172172

@@ -181,7 +181,7 @@ def test_Training_get_spent_calories(input_data):
181181
'Создайте метод `get_spent_calories` в классе `Training`.'
182182
)
183183
assert callable(training.get_spent_calories), (
184-
'`get_spent_calories` должна быть функцией.'
184+
'Проверьте, что `get_spent_calories` - это функция.'
185185
)
186186

187187

@@ -208,7 +208,7 @@ def mock_get_spent_calories():
208208
def test_Swimming():
209209
assert hasattr(homework, 'Swimming'), 'Создайте класс `Swimming`'
210210
assert inspect.isclass(homework.Swimming), (
211-
'`Swimming` должен быть классом.'
211+
'Проверьте, что `Swimming` - это класс.'
212212
)
213213
assert issubclass(homework.Swimming, homework.Training), (
214214
'Класс `Swimming` должен наследоваться от класса `Training`.'
@@ -236,15 +236,9 @@ def test_Swimming():
236236
])
237237
def test_Swimming_get_mean(input_data, expected):
238238
swimming = homework.Swimming(*input_data)
239-
assert hasattr(swimming, 'get_mean_speed'), (
240-
'Создайте метод `get_mean_speed` в классе `Swimming`.'
241-
)
242239
result = swimming.get_mean_speed()
243-
assert isinstance(result, float), (
244-
'Метод `get_mean_speed` в классе `Swimming` '
245-
'должен возвращать значение типа `float`'
246-
)
247240
assert result == expected, (
241+
'Переопределите метод `get_mean_speed` в классе `Swimming`. '
248242
'Проверьте формулу подсчёта средней скорости в классе `Swimming`'
249243
)
250244

@@ -256,13 +250,9 @@ def test_Swimming_get_mean(input_data, expected):
256250
])
257251
def test_Swimming_get_spent_calories(input_data, expected):
258252
swimming = homework.Swimming(*input_data)
259-
assert hasattr(swimming, 'get_spent_calories'), (
260-
'Создайте метод `get_spent_calories` в классе `Swimming`.'
261-
)
262253
result = swimming.get_spent_calories()
263-
assert isinstance(result, float), (
264-
'Метод `get_spent_calories` класса `Swimming` '
265-
'должен возвращать значение типа `float`'
254+
assert type(result) == float, (
255+
'Переопределите метод `get_spent_calories` в классе `Swimming`.'
266256
)
267257
assert result == expected, (
268258
'Проверьте формулу расчёта потраченных калорий в классе `Swimming`'
@@ -272,7 +262,7 @@ def test_Swimming_get_spent_calories(input_data, expected):
272262
def test_SportsWalking():
273263
assert hasattr(homework, 'SportsWalking'), 'Создайте класс `SportsWalking`'
274264
assert inspect.isclass(homework.SportsWalking), (
275-
'`SportsWalking` должен быть классом.'
265+
'Проверьте, что `SportsWalking` - это класс.'
276266
)
277267
assert issubclass(homework.SportsWalking, homework.Training), (
278268
'Класс `SportsWalking` должен наследоваться от класса `Training`.'
@@ -294,13 +284,9 @@ def test_SportsWalking():
294284
])
295285
def test_SportsWalking_get_spent_calories(input_data, expected):
296286
sports_walking = homework.SportsWalking(*input_data)
297-
assert hasattr(sports_walking, 'get_spent_calories'), (
298-
'Создайте метод `get_spent_calories` в классе `SportsWalking`.'
299-
)
300287
result = sports_walking.get_spent_calories()
301-
assert isinstance(result, float), (
302-
'Метод `get_spent_calories`класса `SportsWalking` '
303-
'должен возвращать значение типа`float`'
288+
assert type(result) == float, (
289+
'Переопределите метод `get_spent_calories` в классе `SportsWalking`.'
304290
)
305291
assert result == expected, (
306292
'Проверьте формулу подсчёта потраченных '
@@ -310,18 +296,12 @@ def test_SportsWalking_get_spent_calories(input_data, expected):
310296

311297
def test_Running():
312298
assert hasattr(homework, 'Running'), 'Создайте класс `Running`'
313-
assert inspect.isclass(homework.Running), '`Running` должен быть классом.'
299+
assert inspect.isclass(homework.Running), (
300+
'Проверьте, что `Running` - это класс.'
301+
)
314302
assert issubclass(homework.Running, homework.Training), (
315303
'Класс `Running` должен наследоваться от класса `Training`.'
316304
)
317-
running = homework.Running
318-
running_signature = inspect.signature(running)
319-
running_signature_list = list(running_signature.parameters)
320-
for param in ['action', 'duration', 'weight']:
321-
assert param in running_signature_list, (
322-
'У метода `__init__` класса `Running` '
323-
f'должен быть параметр {param}.'
324-
)
325305

326306

327307
@pytest.mark.parametrize('input_data, expected', [
@@ -335,9 +315,8 @@ def test_Running_get_spent_calories(input_data, expected):
335315
'Создайте метод `get_spent_calories` в классе `Running`.'
336316
)
337317
result = running.get_spent_calories()
338-
assert isinstance(result, float), (
339-
'Метод `get_spent_calories` класса `Running` '
340-
'должен возвращать значение типа `float`'
318+
assert type(result) == float, (
319+
'Переопределите метод `get_spent_calories` в классе `Running`.'
341320
)
342321
assert result == expected, (
343322
'Проверьте формулу расчёта потраченных калорий в классе `Running`'
@@ -348,9 +327,9 @@ def test_main():
348327
assert hasattr(homework, 'main'), (
349328
'Создайте главную функцию программы с именем `main`.'
350329
)
351-
assert callable(homework.main), '`main` должна быть функцией.'
330+
assert callable(homework.main), 'Проверьте, что `main` - это функция.'
352331
assert isinstance(homework.main, types.FunctionType), (
353-
'`main` должна быть функцией.'
332+
'Проверьте, что `main` - это функция.'
354333
)
355334

356335

0 commit comments

Comments
 (0)