我正在编写一些测试,并希望在不同的TestCase类之间共享setUp和tearDown方法。为此,我想你可以使用一个基本测试类,它只实现setUp和tearDown方法并从中继承。但是,我也有一些情况需要使用多个setUp的变量。这是一个例子:
class Base(unittest.TestCase):
def setUp(self):
self.shared = 'I am shared between everyone'
def tearDown(self):
del self.shared
class Base2(unittest.TestCase):
def setUp(self):
self.partial_shared = 'I am shared between only some tests'
def tearDown(self):
del self.partial_shared
class Test1(Base):
def test(self):
print self.shared
test_var = 'I only need Base'
print test_var
class Test2(Base2):
def test(self):
print self.partial_shared
test_var = 'I only need Base2'
class Test3(Base, Base2):
def test(self):
test_var = 'I need both Base and Base2'
print self.shared
print self.partial_shared
if __name__=='__main__':
unittest.main()
这是输出:
..EI am shared between everyone
I only need Base
I am shared between only some tests
I am shared between everyone
======================================================================
ERROR: test (__main__.Test3)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/b3053674/Documents/PyCoTools/PyCoTools/Tests/base_tests.py", line 134, in test
print self.partial_shared
AttributeError: 'Test3' object has no attribute 'partial_shared'
----------------------------------------------------------------------
Ran 3 tests in 0.004s
FAILED (errors=1)
是否可以实现这样的类heirachy?
答案 0 :(得分:1)
Python支持链式继承。
你可以让public class SimpleMovieLister {
@Autowired
private MovieFinder movieFinder;
}
从Base继承,然后只需添加你想要的东西。
像这样:
class Base2()
然后继承它:
class Base2(Base):
def setUp(self):
super(Base2, self).setUp()
self.partial_shared = 'I am shared between only some tests'