setUpClass 可以在 unnitest 框架中扩展吗?
could setUpClass extended in unnitest framework?
可以在 unnitest 框架中扩展 setUpClass 吗?
定义扩展 unnitest.TestCase 的 Base1,Base1 具有 setUpClass 方法。
import unittest
class Base1(unittest.TestCase):
@classmethod
def setUpClass(cls):
print('setupClass - this is Base1')
@classmethod
def tearDownClass(cls):
print('tearDownClass - this is Base1')
定义扩展 Base1 的 Base2 class
from Base1 import Base1
import unittest
class Base2(Base1):
@classmethod
def setUpClass(cls):
print('setupClass - this is Base2')
@classmethod
def tearDownClass(cls):
print('tearDownClass - this is Base2')
def test_default_size(self):
self.assertEqual('a','a')
def test_resize(self):
self.assertEqual('a','b')
我想在Base2中的所有测试用例之前执行Base1中的setUpClass和Base2中的setUpClass,这可能吗?
您必须显式调用 setUpClass
和 tearDownClass
:
class Base2(Base1):
@classmethod
def setUpClass(cls):
print('setupClass - this is Base2')
super(Base2, cls).setUpClass()
@classmethod
def tearDownClass(cls):
print('tearDownClass - this is Base2')
super(Base2, cls).tearDownClass()
但是,如果您不添加这些 class 方法,则可以跳过定义它们:
class Base3(Base1):,
def test1(self):
print('test1')
在这种情况下,Base1
中的 setUpClass
和 tearDownClass
将被隐式调用。
在这里查看继承文档
https://docs.python.org/2/tutorial/classes.html#inheritance
可以在 unnitest 框架中扩展 setUpClass 吗?
定义扩展 unnitest.TestCase 的 Base1,Base1 具有 setUpClass 方法。
import unittest
class Base1(unittest.TestCase):
@classmethod
def setUpClass(cls):
print('setupClass - this is Base1')
@classmethod
def tearDownClass(cls):
print('tearDownClass - this is Base1')
定义扩展 Base1 的 Base2 class
from Base1 import Base1
import unittest
class Base2(Base1):
@classmethod
def setUpClass(cls):
print('setupClass - this is Base2')
@classmethod
def tearDownClass(cls):
print('tearDownClass - this is Base2')
def test_default_size(self):
self.assertEqual('a','a')
def test_resize(self):
self.assertEqual('a','b')
我想在Base2中的所有测试用例之前执行Base1中的setUpClass和Base2中的setUpClass,这可能吗?
您必须显式调用 setUpClass
和 tearDownClass
:
class Base2(Base1):
@classmethod
def setUpClass(cls):
print('setupClass - this is Base2')
super(Base2, cls).setUpClass()
@classmethod
def tearDownClass(cls):
print('tearDownClass - this is Base2')
super(Base2, cls).tearDownClass()
但是,如果您不添加这些 class 方法,则可以跳过定义它们:
class Base3(Base1):,
def test1(self):
print('test1')
在这种情况下,Base1
中的 setUpClass
和 tearDownClass
将被隐式调用。
在这里查看继承文档 https://docs.python.org/2/tutorial/classes.html#inheritance