selenium自动化之setUp和tearDown(1)

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

猜你喜欢

转载自blog.csdn.net/biheyu/article/details/82319839
今日推荐