Skip to content

Commit

Permalink
Update tests and assert messages
Browse files Browse the repository at this point in the history
Обновлены тесты и assert сообщения.
  • Loading branch information
anatoly-kor committed Dec 6, 2021
1 parent b9c25e0 commit 1dae853
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 58 deletions.
7 changes: 1 addition & 6 deletions tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,5 @@ def __enter__(self):

def __exit__(self, *args):
self.extend(self._stringio.getvalue().splitlines())
del self._stringio # free up some memory
del self._stringio
sys.stdout = self._stdout


def pytest_make_parametrize_id(config, val):
return repr(val)

83 changes: 31 additions & 52 deletions tests/test_homework.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import re
import pytest
import types
import inspect
Expand All @@ -7,8 +8,9 @@
import homework
except ModuleNotFoundError:
assert False, 'Не найден файл с домашней работой `homework.py`'
except NameError:
assert False, 'Файл с домашней работой должен называться `homework.py`'
except NameError as exc:
name = re.findall("name '(\w+)' is not defined", str(exc))[0]
assert False, f'Класс {name} не обнаружен в файле домашней работы.'
except ImportError:
assert False, 'Не найден файл с домашней работой `homework.py`'

Expand All @@ -19,10 +21,10 @@ def test_read_package():
'входящего пакета - `read_package`'
)
assert callable(homework.read_package), (
'`read_package` должна быть функцией.'
'Проверьте, что `read_package` - это функция.'
)
assert isinstance(homework.read_package, types.FunctionType), (
'`read_package` должна быть функцией.'
'Проверьте, что `read_package` - это функция.'
)


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


def test_InfoMessage():
assert hasattr(homework, 'InfoMessage'), 'Создайте класс `InfoMessage`'
assert inspect.isclass(homework.InfoMessage), (
'`InfoMessage` должен быть классом.'
'Проверьте, что `InfoMessage` - это класс.'
)
info_message = homework.InfoMessage
info_message_signature = inspect.signature(info_message)
Expand Down Expand Up @@ -79,12 +80,12 @@ def test_InfoMessage():
])
def test_InfoMessage_get_message(input_data, expected):
info_message = homework.InfoMessage(*input_data)
assert callable(info_message.get_message), (
'Создайте метод `get_message` в классе `InfoMessage`.'
)
assert hasattr(info_message, 'get_message'), (
'Создайте метод `get_message` в классе `InfoMessage`.'
)
assert callable(info_message.get_message), (
'Проверьте, что `get_message` в классе `InfoMessage` - это метод.'
)
result = info_message.get_message()
assert isinstance(result, str), (
'Метод `get_message` в классе `InfoMessage`'
Expand All @@ -102,9 +103,8 @@ def test_InfoMessage_get_message(input_data, expected):


def test_Training():
assert hasattr(homework, 'Training'), 'Создайте класс `Training`'
assert inspect.isclass(homework.Training), (
'`Training` должен быть классом.'
'Проверьте, что `Training` - это класс.'
)
training = homework.Training
training_signature = inspect.signature(training)
Expand Down Expand Up @@ -140,12 +140,12 @@ def test_Training_get_distance(input_data, expected):
'Создайте метод `get_distance` в классе `Training`.'
)
result = training.get_distance()
assert isinstance(result, float), (
assert type(result) == float, (
'Метод `get_distance` в классе `Trainig`'
'должен возвращать значение типа `float`'
)
assert result == expected, (
'Проверьте корректность формулы подсчета дистанции класса `Training`'
'Проверьте формулу подсчета дистанции класса `Training`'
)


Expand All @@ -160,13 +160,13 @@ def test_Training_get_mean_speed(input_data, expected):
'Создайте метод `get_mean_speed` в классе `Training`.'
)
result = training.get_mean_speed()
assert isinstance(result, float), (
assert type(result) == float, (
'Метод `get_mean_speed` в классе `Training`'
'должен возвращать значение типа `float`'
)
assert result == expected, (
'Проверьте формулу подсчета средней скорости движения '
'класса `Training`'
'Проверьте формулу подсчёта средней скорости движения '
'в классе `Training`'
)


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


Expand All @@ -208,7 +208,7 @@ def mock_get_spent_calories():
def test_Swimming():
assert hasattr(homework, 'Swimming'), 'Создайте класс `Swimming`'
assert inspect.isclass(homework.Swimming), (
'`Swimming` должен быть классом.'
'Проверьте, что `Swimming` - это класс.'
)
assert issubclass(homework.Swimming, homework.Training), (
'Класс `Swimming` должен наследоваться от класса `Training`.'
Expand Down Expand Up @@ -236,15 +236,9 @@ def test_Swimming():
])
def test_Swimming_get_mean(input_data, expected):
swimming = homework.Swimming(*input_data)
assert hasattr(swimming, 'get_mean_speed'), (
'Создайте метод `get_mean_speed` в классе `Swimming`.'
)
result = swimming.get_mean_speed()
assert isinstance(result, float), (
'Метод `get_mean_speed` в классе `Swimming` '
'должен возвращать значение типа `float`'
)
assert result == expected, (
'Переопределите метод `get_mean_speed` в классе `Swimming`. '
'Проверьте формулу подсчёта средней скорости в классе `Swimming`'
)

Expand All @@ -256,13 +250,9 @@ def test_Swimming_get_mean(input_data, expected):
])
def test_Swimming_get_spent_calories(input_data, expected):
swimming = homework.Swimming(*input_data)
assert hasattr(swimming, 'get_spent_calories'), (
'Создайте метод `get_spent_calories` в классе `Swimming`.'
)
result = swimming.get_spent_calories()
assert isinstance(result, float), (
'Метод `get_spent_calories` класса `Swimming` '
'должен возвращать значение типа `float`'
assert type(result) == float, (
'Переопределите метод `get_spent_calories` в классе `Swimming`.'
)
assert result == expected, (
'Проверьте формулу расчёта потраченных калорий в классе `Swimming`'
Expand All @@ -272,7 +262,7 @@ def test_Swimming_get_spent_calories(input_data, expected):
def test_SportsWalking():
assert hasattr(homework, 'SportsWalking'), 'Создайте класс `SportsWalking`'
assert inspect.isclass(homework.SportsWalking), (
'`SportsWalking` должен быть классом.'
'Проверьте, что `SportsWalking` - это класс.'
)
assert issubclass(homework.SportsWalking, homework.Training), (
'Класс `SportsWalking` должен наследоваться от класса `Training`.'
Expand All @@ -294,13 +284,9 @@ def test_SportsWalking():
])
def test_SportsWalking_get_spent_calories(input_data, expected):
sports_walking = homework.SportsWalking(*input_data)
assert hasattr(sports_walking, 'get_spent_calories'), (
'Создайте метод `get_spent_calories` в классе `SportsWalking`.'
)
result = sports_walking.get_spent_calories()
assert isinstance(result, float), (
'Метод `get_spent_calories`класса `SportsWalking` '
'должен возвращать значение типа`float`'
assert type(result) == float, (
'Переопределите метод `get_spent_calories` в классе `SportsWalking`.'
)
assert result == expected, (
'Проверьте формулу подсчёта потраченных '
Expand All @@ -310,18 +296,12 @@ def test_SportsWalking_get_spent_calories(input_data, expected):

def test_Running():
assert hasattr(homework, 'Running'), 'Создайте класс `Running`'
assert inspect.isclass(homework.Running), '`Running` должен быть классом.'
assert inspect.isclass(homework.Running), (
'Проверьте, что `Running` - это класс.'
)
assert issubclass(homework.Running, homework.Training), (
'Класс `Running` должен наследоваться от класса `Training`.'
)
running = homework.Running
running_signature = inspect.signature(running)
running_signature_list = list(running_signature.parameters)
for param in ['action', 'duration', 'weight']:
assert param in running_signature_list, (
'У метода `__init__` класса `Running` '
f'должен быть параметр {param}.'
)


@pytest.mark.parametrize('input_data, expected', [
Expand All @@ -335,9 +315,8 @@ def test_Running_get_spent_calories(input_data, expected):
'Создайте метод `get_spent_calories` в классе `Running`.'
)
result = running.get_spent_calories()
assert isinstance(result, float), (
'Метод `get_spent_calories` класса `Running` '
'должен возвращать значение типа `float`'
assert type(result) == float, (
'Переопределите метод `get_spent_calories` в классе `Running`.'
)
assert result == expected, (
'Проверьте формулу расчёта потраченных калорий в классе `Running`'
Expand All @@ -348,9 +327,9 @@ def test_main():
assert hasattr(homework, 'main'), (
'Создайте главную функцию программы с именем `main`.'
)
assert callable(homework.main), '`main` должна быть функцией.'
assert callable(homework.main), 'Проверьте, что `main` - это функция.'
assert isinstance(homework.main, types.FunctionType), (
'`main` должна быть функцией.'
'Проверьте, что `main` - это функция.'
)


Expand Down

0 comments on commit 1dae853

Please sign in to comment.