2013-02-22 4 views
0

Я пишу небольшое приложение на Python, и один модуль отвечает за загрузку и разбор веб-страниц с помощью Beautiful Soup для разбора и urllib2 для загрузки страницы.Python - класс модульного тестирования, который извлекает данные из html-страниц

Мне интересно, как я могу написать модульные тесты для класса, ответственного за разбор страниц.

Я мог бы создать абстракцию вокруг urllib2 и ввести ее в классы, которые отвечают за разбор (мой план состоит в том, чтобы иметь разные классы для разных веб-страниц), и во время тестирования я бы ввел объект, который будет издеваться над этой абстракцией. Но я не настолько уверен в этом. Я бы только создал абстракцию, потому что будет легче писать тесты не потому, что требуется абстракция (по крайней мере, это то, что я думаю сейчас).

Также у меня возникла бы проблема с тем, как протестировать эту абстракцию, для правильной работы было бы нужно подключение к Интернету, и когда я буду запускать тесты, как я могу утверждать, что была загружена правильная страница?

ответ

1

Для реализации модульных тестов в питоне, вы должны рассмотреть возможность использования Mocks и патчей: http://www.voidspace.org.uk/python/mock/

+0

я знаю о насмехаясь, я даже упомянул об этом в моем посте. Моя проблема в том, что я не знаю, как правильно проверить свой класс, который использует функцию 'urlopen' из' urllib2' для загрузки страниц. Даже если я создаю абстракцию при загрузке страницы, все еще есть случай тестирования этой абстракции, и у нас опять та же проблема. – Andna

+0

Я не уверен, что я понял. Вам не нужно создавать абстракцию самостоятельно, чтобы высмеять 'urlopen', вы можете использовать декоратор патча. – Jean

+0

Хорошо, я прочитал об этом декораторе патча, и это сработало, спасибо. – Andna

Смежные вопросы