F.
======================================================================
FAIL: test_multiple_words (__main__.TestCap)
----------------------------------------------------------------------
Traceback (most recent call last):
File "test_cap.py", line 20, in test_multiple_words
self.assertEqual(result, 'A Veritable Flock Of Ducks')
AssertionError: 'A veritable flock of ducks' != 'A Veritable Flock Of Ducks'
— A veritable flock of ducks
?
+ A Veritable Flock Of Ducks
?
----------------------------------------------------------------------
Ran 2 tests in 0.001s
FAILED (failures=1)
Пакет устроил результат первой проверки (test_one_word), но не результат
второй (test_multiple_words). Стрелки вверх (^) показывают, какие строки отлича-
ются.
Что такого особенного в примере с несколькими словами? После прочтения
документации для строковой функции capitalize (https://docs.python.org/3/library/
stdtypes.html#str.capitalize) мы поняли причину проблемы: она увеличивает только
первую букву первого слова. Возможно, нам сразу нужно было начать с чтения
документации.
Нам нужна другая функция. После прочтения той страницы мы нашли функцию
title() (https://docs.python.org/3/library/stdtypes.html#str.title). Изменим файл cap.py
так, чтобы в нем вместо функции capitalize() использовалась функция title():
def just_do_it(text):
return text.title()
Повторите тесты и взгляните на результат:
$ python test_cap.py
..
----------------------------------------------------------------------
Ran 2 tests in 0.000s
OK
Тестируем код
357
Все прошло отлично. Хотя на самом деле нет. Нам нужно добавить в файл
test_cap.py как минимум еще один метод:
def test_words_with_apostrophes(self):
text = "I'm fresh out of ideas"
result = cap.just_do_it(text)
self.assertEqual(result, "I'm Fresh Out Of Ideas")
Запустите тесты еще раз:
$ python test_cap.py
..F
======================================================================
FAIL: test_words_with_apostrophes (__main__.TestCap)
----------------------------------------------------------------------
Traceback (most recent call last):