I am looking for ways / best practices on testing methods defined in an abstract base class. One thing I can think of directly is performing the test on all concrete subclasses of the base class, but that seems excessive at some times. Consider this example: import abc class Abstract(object): __metaclass__ = abc.ABCMeta @abc.abstractproperty def id(self): return @abc.abstractmethod def foo(self):