Возможно, лучшим решением является разделение вашей функции на две части. Одна часть для разбора, вторая - для написания. Затем вы можете отдельно тестировать каждую деталь.
Для первой части укажите файл и убедитесь, что функция синтаксического анализа возвращает правильную строку и/или выбрасывает правильное исключение.
Для второго дайте ему строку для записи, а затем убедитесь, что файл написан и содержимое соответствует вашей строке. Представляется заманчивым пропустить тест, который записывает данные, так как разумно предположить, что функции открытия и записи python работают. Тем не менее, модульное тестирование также доказывает, что данные, которые вы передаете, - это данные, которые записываются (т. Е. У вас нет ошибки, которая заставляет фиксированную строку записывать в файл).
Если рефакторинг кода не является чем-то, что вы можете сделать, вы все равно можете проверить функцию. Загрузите данные, которые нужно разобрать, затем откройте файл, который он написал, и сравните результат с тем, что вы ожидаете от него.
у вас нет ... funtion, который возвращает строку ..., которая затем записывается на диск ... таким образом вы можете утверждать, что вы возвращаете ожидаемую строку ... вы хотите проверить функции нижнего уровня что вы нажимаете как можно больше (каждая функция делает как можно меньше), то к тому времени, когда вы на самом деле пишете, чтобы все, на что вы должны рассчитывать, это то, что python 'open' и' write' работают ..., который является безопасная ставка и вне сферы действия того, что вам нужно проверить –
А, тогда должен ли я пройти тестовый запуск анализатора в тестовом файле, а затем проверить, что анализируемые данные соответствуют некоторым строкам? – ben
Достаточно ли написать определенный детерминированный контент на диск, а затем проверить содержимое? – gustafbstrom