I've been a small business owner, and a software contractor, so I've seen a fair few medium/large python codebase of varying age and quality.
To address your points from the ~10 codebase I've worked on in recent memory:
- Code review: Always in place, though often the CTO has a tendency to merge without review on evenings/weekends
- Test Coverage: Often a challenge - or rather tests are there for coverage, but are of poor quality and don't really assert anything that useful
- Your suggested normal workflow _is_ the normal. Sometimes there's been a dedicated QA team that verifies the changes as seen by the end user too.
- Deployment: Yep. Heroku or k8s have been common, but at least some form of 1-click deploy/promote
Perhaps I've just been super lucky! There are often still major problems in the codebase and refactoring/rebuilding needed to address the challenges, as well as resistance of the existing team to truly change their mindsets to address the problem v.s. the band-aid (or instant gratification) of a quick fix.
Don't give up the fight!