Suppose I had a large project in Java, and a class, UsedEverywhere, which was used everywhere. If I changed the return type of the returnsSomething method of that class, my IDE would tell me about everything that broke because of that change.  Now suppose I have a large project in Python with the same class and I make the same change.  There is no way for me to know what impact I have had unless I also have a huge suite of regression unit tests (which I use regularly).  This is due to the dynamic, duck typing system.  The same goes for a situation where I remove a method from a class that is used everywhere.  What is the best way to protect large projects from breaking without our knowing it?  These breakages would never be detected until some kind of regression testing is done.
Two things:

Automated tests, as you've suggested.
Static analysis: Pylint, PyChecker and/or pyflakes.  Of these,
pylint is the most stringent.
Python: large projects and making changes to files used everywhere