1. О TDD я не говорил ни слова. TDD (test DRIVEN development) -- это не просто покрытие тестами. TDD -- это подход, когда тесты пишут ДО кода. И я не являюсь, к слову сказать, большим поклонником данного подхода. Но в эту дискуссию мы пускаться не будем, она далека от предмета разговора.2. Вы назвали три в чём-то схожих языка (особенно Python и Ruby) с общими проблемами. Разумеется, от Ruby Python в данном контексте мало чем отличается. Разве что Python чуть чаще изучают новички в качестве первого языка.
3. Вот если бы Вы сравнили Python с Java, C++ или, страшно сказать, OCaml, он бы, уверяю, отличался. Там, где есть развитый контроль времени компиляции, больше сходит с рук. И при определённых условиях можно даже прожить без того, что Вы ошибочно называете TDD. Это всё равно скверно, конечно. Но масса проектов на C/C++ с кучей legacy-кода живут. И даже разнообразными ухищрениями сохраняют приемлемое качество. Но вот в то, что так можно выжить на Python или Ruby, я не верю.