Форум сайта python.su
Андрей СветловЯ бы сказал проще. Он не имеет смысла, так как не имеет смысл тестировать <=. К этой идее я и подвожу :)
Сам по себе _test_html_fresh не имеет смысла (по крайней мере в моем случае) - это по сути staticmethod, так как не может вызывать методы экземпляра (потенциально небезопасные).
Андрей СветловА тут следующая идея. Какая обязанность у класса Post? В основном - обращение к библиотечным средствам. Высокоуровневых действий мало. Вот они:
Попробуйте написать аналог для refresh_html.
self.full_path[:-4] + '.html'
...
if 'title' in md.Meta:
title = ' '.join(md.Meta['title'])
self.title = title
Андрей СветловПроблема в том, что сам класс Post по сути является двойником этого FileSystem. А имеет ли смысл тестировать классы FileSystem и Impl?
Подмена FileSystem всяко лучше и удобней.
Офлайн
Вообще-то у “живого” класса Post хватает разных интересных функций.
Например, он сериализует часть своих атрибутов в yaml.
Эти атрибуты тоже непростые: их изменение помечает пост как “несинхронизированный”, заодно извещая конфигурацию.
И так далее.
title - заголовок поста. Может указываться как из command line так и браться из rst, если он там есть.
При тестировании я стараюсь исходить из того, что весь код должен быть покрыт тестами - если явно не оговорено обратное. Например, в юниттестировании GUI я обычно не делаю тестов для View/Widget/Form - их создать практически невозможно. Или это крайне неудобно при очень малой выгоде.
Post - не двойник FileSystem. У FileSystem хватает и других клиентов.
Если бы они были двойниками - достаточно было бы сделать _Impl у Post.
Тестировать FileSystem нужно. Например, там есть функция "найти относительный по отношению к проекту путь и проверить, лежит ли файл внутри проекта.
* project
- .blogspot.yaml
- article1.rst
* multithreading
- article1.rst
- article2.rst
В качестве относительных путей фигурируют multithreading/article1.rst, при этом есть взаимное преобразование относительных и абсолютных.
Я хочу получить возможность свободно перемещать проект по файловой системе, не переконфигурируя его при этом.
Тесты для этого нужны хотя бы потому, что я уже пару раз исправлял ошибки.
Тестировать _Impl смысла нет, что правда то правда.
О списке литературы. Идея неплохая. К сожалению, я читал лишь бумажного Кента Бека весьма давно, и много-много статей в тернете по этому поводу.
Если порекомендуете хорошие ссылки - я их добавлю.
Офлайн
Андрей СветловЯ намекал на то, что можно сразу присвоить self.title = ‘ ’.join(md.Meta)
title - заголовок поста. Может указываться как из command line так и браться из rst, если он там есть.
Андрей СветловНу нет, так нет.
Post - не двойник FileSystem. У FileSystem хватает и других клиентов.
Андрей СветловЯ как раз о бумажной литературе и говорил.
О списке литературы. Идея неплохая. К сожалению, я читал лишь бумажного Кента Бека весьма давно, и много-много статей в тернете по этому поводу.
Если порекомендуете хорошие ссылки - я их добавлю.
Офлайн
Извиняюсь за длительное молчание.
Я намекал на то, что можно сразу присвоить self.title = ‘ ’.join(md.Meta)Почти так и получилось в итоге. Есть нюанс. self.title может меняться по явной указке или в результате действий пользователя.
Офлайн