<p>解决此问题的一种方法是使用<a href="https://stackoverflow.com/questions/533631/what-is-a-mixin-and-why-are-they-useful">^{<cd1>}</a>:</p>
<pre><code>from django.test import TestCase
class StoreTestCase(object):
def setUp(self):
'''This should never execute but it does when I test test_store_a'''
self.data = None
def test_get_price(self):
for page in self.data:
self.assertEqual(store_a.get_price(page['url']), page['expected_price'])
class StoreATestCase(StoreTestCase, TestCase):
def setUp(self):
self.data = [{'url': 'http://www.foo.com/bar', 'expected_price': 7.99},
{'url': 'http://www.foo.com/baz', 'expected_price': 12.67}]
</code></pre>
<p>不会执行<code>StoreTestCase</code>,因为它不是<code>TestCase</code>,但您的{<cd4>}仍将受益于继承。在</p>
<p>我认为您的问题之所以发生是因为<code>StoreTestCase</code>是一个<code>TestCase</code>实例,因此它在您运行测试时被执行。在</p>
<p>编辑:</p>
<p>我还建议在<code>StoreTestCase.setUp</code>中引发一个异常,明确地说它没有实现。看看<a href="https://docs.python.org/2/library/exceptions.html#exceptions.NotImplementedError" rel="nofollow noreferrer">these exception</a>。
你最终会得到这样的结果:</p>
^{pr2}$