擅长:python、mysql、java
<p>正如一些评论所回应的,以这种方式构造测试可能是测试本身的设计缺陷,您应该考虑重新构造它们。但是,如果您想这样做,并且依赖于您正在使用的测试运行程序按字母顺序(看似)执行它们,那么我建议您执行以下操作。</p>
<p>类似于@Matthias所说的,但是我会做一件不同的事情,在这种情况下,你可能会决定在以后继承类。</p>
<pre><code>from unittest import TestCase, main as unittest_main
class TestSimpleFoo(TestCase):
foo = 'bar'
def setUp(self):
pass
def test_a(self):
self.assertEqual(self.__class__.foo, 'bar')
self.__class__.foo = 'can'
def test_f(self):
self.assertEqual(self.__class__.foo, 'can')
if __name__ == '__main__':
unittest_main()
</code></pre>
<p>这个答案和您接受的@Matthias的答案的区别在于,类的显式声明与所述类引用的查找。</p>
<pre><code>TestSimpleFoo vs self.__class__
</code></pre>
<p>我更喜欢dynamicness,这样我可以在以后继承测试并背靠背地运行这两个测试类,而不会在这两个类之间交叉。因为如果选择从该类继承,显式命名类引用将导致两个测试类针对该引用而不是各自的类运行。</p>