Тестирование задач

Чтобы вам было проще проверять, правильно ли работают ваши программы, создана тестовая система. Она автоматически запускает решения на нескольких тестах и смотрит, совпал ли ответ, который выдает ваше решение, с правильным.

Оформление задач

Все задачи оформляются в виде функции. Они получают на вход какие-то данные, возвращают результат решения задачи. Предположим, что есть задача 1:

Дано число, верните другое число, которое в два раза больше данного.

и задача 2:

Даны два числа, верните их сумму.

Решим эти задачи, заведем файл example_tasks.py и напишем внутри:

def task1(x):
    return 2 * x


def task2(x, y):
    return x + y

Для начала проверим задачи самостоятельно. Для этого вызовем функции несколько раз с разными аргументами. Код станет таким:

def task1(x):
    return 2 * x


def task2(x, y):
    return x + y


print("Проверка задачи 1")
print(task1(10))  # должно быть 20
print(task1(5))  # должно быть 10
print(task1(42))  # должно быть 84

print("Проверка задачи 2")
print(task2(10, 20))  # должно быть 30
print(task2(0, 5))  # должно быть 5
print(task2(42, 123))  # должно быть 165

Запустите теперь этот код и проверьте, правильно ли считаются значения. Если вам кажется, что правильно, переходим к следующему шагу, попробуем запустить тестовую систему для этих задач.

Для начала возьмем тесты. Ссылки на тесты всегда будут частью условия. У этих задач тесты можно взять по ссылкам тесты для задачи 1 и тесты для задачи 2

Кроме этого, возьмем сам код тестовой системы: testsystem.py

Итого, у вас в папке должны лежать 4 файла: ваши решения example_tasks.py, тестовая система testsystem.py и два файла с тестами task_example.json.gz и task_example_2.json.gz.

Добавьте небольшое изменение в файл с решениями example_tasks.py, допишите строку import в начале и тестовый вызов в конце:

from testsystem import test  # новая строка

def task1(x):
    return 2 * x


def task2(x, y):
    return x + y


print("Проверка задачи 1")
print(task1(10))  # должно быть 20
print(task1(5))  # должно быть 10
print(task1(42))  # должно быть 84

test(task1, "task_example.json.gz")  # указываем, что проверять (без скобок) и на каком файле

print("Проверка задачи 2")
print(task2(10, 20))  # должно быть 30
print(task2(0, 5))  # должно быть 5
print(task2(42, 123))  # должно быть 165

test(task2, "task_example_2.json.gz")  # указываем, что проверять (без скобок) и на каком файле

Запустите код и проверьте, что все тесты пройдены. После этого добавьте ошибку в решение, например, задачи 2, и проверьте, что тесты перестали проходить.