unittest中setUp/tearDown和setUpclass/teardownclass的区别:
1,执行继承了unittest.TestCase的类下每个test开头的方法(就是用例)时,都会执行setUp和tearDown
如下面的例子所示:
class CommonTest(Base):
def setUp(self):
base_page = BasePage(self.driver, self.timeout)
self.base_page = base_page
print("setUp")
def test_001_get_resource_list_page_title(self):
data = self.base_page.get_resource_list_page_title()
print(data)
def test_002_get_acpowercharger_public(self):
data = self.base_page.get_tab_acpowercharger_public()
print(data)
def tearDown(self):
print("tearDown")
输出如下:
setUp
test Platform
.tearDown
setUp
test data
.tearDown
2,setUpClass和tearDownClass则是在class中全部测试用例开始/结束时调用。
例子如下:
class CommonTest(Base):
@classmethod
def setUpClass(cls):
print("setup class")
def test_001_get_resource_list_page_title(self):
data = self.base_page.get_title_resource_list_page()
# self.assertEqual(1, 2, "test sc")
print(data)
def test_002_get_acpowercharger_public(self):
data = self.base_page.get_tab_acpowercharger_public()
print(data)
@classmethod
def tearDownClass(cls):
print("teardown class")
测试结果如下:
setup class
test Platform
test data
.teardown class
3, 实际使用中,测试用例可能分布在不同的test*.py文件中。我们定义了一个单独的base.py文件做测试数据的准备和清理setUpClass/tearDownClass。然后其他test*.py文件都继承了这个base。然后有某些test_*.py文件又有一些额外的setup和teardown数据处理。此时我们可以在test_*.py使用super扩展来自于base的setUpClass。
例如:我们先定义了一个文件用户测试数据的准备和清理
base.py内容如下
class Base(unittest.TestCase):
'''
browser setup and teardown
'''
@classmethod
def setUpClass(cls):
cls.browser = BrowerType("firefox")
@classmethod
def tearDownClass(cls):
cls.driver.quit()
之后我们新定义一个test_01.py继承Base中的数据准备工作,再拓展setup和teardown
class CommonTest(Base):
@classmethod
def setUpClass(cls):
super(CommonTest, cls).setUpClass()
cls.base_page = base_page
print("setup class")
def test_001_get_resource_list_page_title(self):
data = self.base_page.get_title_resource_list_page()
# self.assertEqual(1, 2, "test sc")
print(data)
def test_002_get_acpowercharger_public(self):
data = self.base_page.get_tab_acpowercharger_public()
print(data)
@classmethod
def tearDownClass(cls):
super(CommonTest, cls).tearDownClass()
print("teardown class")
测试输出:
setup class
test Platform
test data
.teardown class