However, I eventually acquiesced to the colloquial meaning of "mock" to mean "test double"; in most contexts where people are talking about "mocks" they're really talking about fakes, and the real actual mock-module-style mocks are increasingly universally understood to be technical debt.
(As far as I know, we don't use the 'mock' module anywhere in Twisted, and we shouldn't start :).)
The most important thing here is to reduce the number of duplicate fakes.
Completely verified fakes are unfortunately almost impossible to build. If the faked API has good enough testing support that you can programmatically provoke all of its failure modes, then the only reason to build a fake is performance, which is rarely our most pressing problem :-). So quite often even the best verified fakes will only be partially verified. Even partial verification of things like kernel APIs can be a major challenge. So it's often necessary to accept a fake which is not directly verified against the real API.
However, ad-hoc one-off fakes are at extremely high risk of drift. If you are trying to verify the system under test's response to behavior X in a test, and you build a fake that implements X, Y, and Z for the sake of the test's set-up, naturally that new fake's Y and Z will be flaky and half-implemented (at best: its X may be quite half-baked as well). Moreover, if the real X, Y or Z changes in the future, it's highly unlikely anyone will come along and update the mock for just that one test.
If that fake were shared among a large number of tests, though, or even better, distributed along with the real X, Y, and Z, there is at least a fighting chance that someone might update the fake in the future and notice that the system under test has an issue.
I believe the most important principle here is that test code is just code like any other code, and following generally good code-organization principles like well-defined interfaces, planning for maintenance over time, "don't repeat yourself", clear locus of responsibility, etc etc, will prevent test suites and their attendant doubles from decaying into a sprawling and unmaintainable mess. We have generally been making good progress on this over time, but it's important for everybody involved with Twisted to continue trying to reduce duplication in fakes, and improve the verification of the fakes we have, as we maintain our test suite.
-glyph