После прибытия на несколько проектов, которые работали, но были нужны в главной новой функциональности, одной из моих нижних строк, поскольку технический руководитель, запускающий проект, - то, что модульные тесты - необходимость.
Это просто стоит слишком много, чтобы попытаться переписать код, который был записан без модульных тестов. Код неизменно плохо структурирован (Мультитысяча веб-сервисов строки все в единственном коде позади кого-либо?) и изменения внесения в него (даже когда это хорошо структурировано), не представляя ошибки действительно болезненный процесс.
Это становится особенно верным, когда проект переходит к противопожарному режиму (и не наличие модульных тестов способствует проектам, входящим в то состояние также) - клиенты становятся сварливыми, они потеряли веру в проект, немного вещей, хуже, чем быть бедным парнем, пытающимся получить следующую фиксацию в, не представляя целую груду ошибок регрессии, и даже не имея модульных тестов.
Тех ситуаций можно так легко избежать или по крайней мере смягчить путем объяснения значения тестов впереди. Конечно, существуют ситуации, где модульные тесты не так важны, но они - действительно исключение.
Так да - я настаиваю на модульных тестах и провел много времени, фиксируя путаницу, сделанную другими разработчиками, которые полагались на их навыки кодирования.
Вот как я отправляю ZIP-файл,
req.send_response(200)
req.send_header('Content-Type', 'application/zip')
req.send_header('Content-Disposition', 'attachment;'
'filename=%s' % filename)
Большинство браузеров обрабатывают его правильно.
Если вам не нужно возвращать тело ответа (то есть, если ваша структура предоставила поток для тела ответа), вы можете избежать хранения файла в памяти с помощью чего-то вроде это:
fp = file(path_to_the_file, 'rb')
while True:
bytes = fp.read(8192)
if bytes:
response.write(bytes)
else:
return
Какую веб-платформу вы используете?