<p>您的问题与此<a href="https://stackoverflow.com/a/14954405/1030244">one</a>类似,解决方法如下:</p>
<pre><code>self.id()
</code></pre>
<p>请参阅函数定义<a href="https://github.com/python/cpython/blob/e42b705188271da108de42b55d9344642170aa2b/Lib/unittest/case.py#L486" rel="nofollow noreferrer">here</a>,它为实例化的<code>TestCase</code>类的实例调用<code>self.__class__</code>。如果您使用的是多重继承,<a href="https://docs.python.org/3.3/tutorial/classes.html#multiple-inheritance" rel="nofollow noreferrer">multiple inheritance rules from Python</a>将应用:</p>
<blockquote>
<p>For most purposes, in the simplest cases, you can think of the search for attributes inherited from a parent class as depth-first, left-to-right, not searching twice in the same class where there is an overlap in the hierarchy. </p>
</blockquote>
<p>这意味着<code>common_test_case.CommonTestCase</code>将被搜索,然后<code>unittest.TestCase</code>。如果在<code>common_test_case.CommonTestCase</code>中没有id函数,则应该像它只从<code>unittest.TestCase</code>派生一样工作。如果您觉得有必要将<code>id</code>函数添加到<code>CommonTestCase</code>,可以这样做(如果确实需要):</p>
<pre><code>def id(self):
if issubclass(self,unittest.TestCase):
return super(unittest.TestCase,self).id()
</code></pre>