Demo entry 6637462

t

   

Submitted by anonymous on Sep 02, 2017 at 21:24
Language: Python. Code size: 2.0 kB.

def test_reverse():
    # Список тестов
    # Каждый тест -- это пара (входное значение, ожидаемое выходное значение)
    test_data = (
        (42, None),               # неправильный тип входного аргумента, ни с чем не будем сравнивать
        (['a', 'b', 'c'], None),  # тоже неправильный входной аргумент, но он "похож" на строку 
                                  # (можно итерироваться и брать срезы)
        ('', ''),                 # "граничный" случай -- пустая строка
        ('aba', 'aba'),           # "особый" случай -- строка, которая не меняется при разворачивании
        ('a', 'a'),               # еще один "особый" и почти "граничный" случай
        ('abc', 'cba'),           # "обычный" случай
    )
    
    for input_s, correct_output_s in test_data:
        try:
            # Вычисляем результат на входных данных
            # Возможно, что наша функция выбросит исключение, поэтому делаем это в блоке try
            output_s = reverse(input_s)
        except TypeError:
            if correct_output_s is None:
                # это исключение и ожидалось, продолжаем тестирование
                continue
            if type(input_s) == str:
                # вход корректный, но выброшено исключение TypeError -- это ошибка
                print('Ошибка! Не удалось вычислить reverse("{}")'.format(input_s))
                return False
        except Exception:
            # Выброшено неожиданное исключение -- это ошибка
            print('Ошибка! Не удалось вычислить reverse("{}")'.format(input_s))
            return False
        else:
            if output_s != correct_output_s:
                # если ответ не совпал с ожидаемым, завершаем тестирование и возвращаем False
                print('Ошибка! reverse({}) равно {} вместо {}'.format(input_s, output_s, correct_output_s))
                return False
    # тестирование успешно пройдено
    print('Все тесты пройдены успешно')
    return True

This snippet took 0.00 seconds to highlight.

Back to the Entry List or Home.

Delete this entry (admin only).