Если вы ссылаетесь на практику написания и поддержки модульных тестов для каждого бита кода, я рискну предположить и заявить, что это не широко используется в игровой индустрии. Есть много причин для этого, но я могу думать о 3 очевидных:
Парадигма TDD лучше всего работает в прикладных областях, которые не очень состоят в состоянии, или, по крайней мере, где движущиеся части не все движутся одновременно, если говорить в разговорной речи.
TDD применимо к частям процесса разработки игры (базовые библиотеки и т. Д.), Но «тестирование» в этой области работы обычно означает выполнение автоматического пролета, случайного тестирования ключа, определения времени загрузки io, отслеживания fps-пиков. , убедившись, что игрок не может извиваться, вызывая зрительную нестабильность, и все в таком духе. Автомат также очень часто является гуманоидом.
TDD может быть полезным инструментом, но его статус как серебряной пули, которая должна быть повсеместно распространена при создании системы, довольно сомнителен. Разработка должна вестись не тестами, а разумом. RDD - это дерьмовая аббревиатура - она не приживется. ;)
Это просто две разные вещи. print
обычно попадает в sys.stdout
. Стоит знать разницу между stdin
, stdout
и stderr
- все они имеют свое применение.
В частности, stdout
следует использовать для нормального вывода программы, тогда как stderr
следует зарезервировать только для сообщений об ошибках (ненормальное выполнение программы). Существуют утилиты для разделения этих потоков, которые позволяют пользователям вашего кода различать нормальный вывод и ошибки.
print
может печатать на любом файловом объекте, включая sys.stderr
.
print >> sys.stderr, 'Text'
Преимущества использования sys.stderr
для ошибок вместо sys.stdout
:
sys.stderr
перенаправляется в файл журнала, поэтому меньше шансов, что программа может вылететь до того, как ошибка была зарегистрирована. Этот ответ написан с учетом Python 2.
Для Python 3 используйте вместо этого print ('Text', file = sys.stderr)
.
Будьте осторожны: здесь есть некоторые тонкости, в том числе, направляются ли потоки на интерактивные устройства. Самым большим сюрпризом является то, что в Python 3 stderr буферизуется по строкам (по крайней мере, в Unix). Например, в окне терминала следующее выводит число каждые две секунды в Python 2:
for n in range(5):
print >> sys.stderr, n, # final comma to squelch newline character
time.sleep(2)
, тогда как в Python 3 следующее выводит числа вместе после завершения цикла:
for n in range(5):
print(n, file=sys.stderr, end='') # print n to sys.stderr with no newline char
time.sleep(2)