2015-04-30 3 views
1

Я написал часть программного обеспечения на Python, которая много анализирует и много записывает файлы на диск. Я начинаю писать модульные тесты, но понятия не имею, как выполнить модульную проверку функции, которая просто записывает некоторые данные на диск и ничего не возвращает.Как написать тесты для авторов/парсеров? (Python)

Я знаком с unittest и ddt. Любые советы или даже ссылки на ресурс, где я мог бы узнать больше, будут оценены.

+0

у вас нет ... funtion, который возвращает строку ..., которая затем записывается на диск ... таким образом вы можете утверждать, что вы возвращаете ожидаемую строку ... вы хотите проверить функции нижнего уровня что вы нажимаете как можно больше (каждая функция делает как можно меньше), то к тому времени, когда вы на самом деле пишете, чтобы все, на что вы должны рассчитывать, это то, что python 'open' и' write' работают ..., который является безопасная ставка и вне сферы действия того, что вам нужно проверить –

+1

А, тогда должен ли я пройти тестовый запуск анализатора в тестовом файле, а затем проверить, что анализируемые данные соответствуют некоторым строкам? – ben

+0

Достаточно ли написать определенный детерминированный контент на диск, а затем проверить содержимое? – gustafbstrom

ответ

3

Возможно, лучшим решением является разделение вашей функции на две части. Одна часть для разбора, вторая - для написания. Затем вы можете отдельно тестировать каждую деталь.

Для первой части укажите файл и убедитесь, что функция синтаксического анализа возвращает правильную строку и/или выбрасывает правильное исключение.

Для второго дайте ему строку для записи, а затем убедитесь, что файл написан и содержимое соответствует вашей строке. Представляется заманчивым пропустить тест, который записывает данные, так как разумно предположить, что функции открытия и записи python работают. Тем не менее, модульное тестирование также доказывает, что данные, которые вы передаете, - это данные, которые записываются (т. Е. У вас нет ошибки, которая заставляет фиксированную строку записывать в файл).

Если рефакторинг кода не является чем-то, что вы можете сделать, вы все равно можете проверить функцию. Загрузите данные, которые нужно разобрать, затем откройте файл, который он написал, и сравните результат с тем, что вы ожидаете от него.

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