python+selenium自动化测试-23setUp()和tearDown()及setUpClass()和tearDownClass()的配对使用

① setUp():每个测试函数运行前运行
② tearDown():每个测试函数运行完后执行
③ setUpClass():必须使用@classmethod 装饰器,所有test运行前运行一次
④ tearDownClass():必须使用@classmethod装饰器,所有test运行完后运行一次

由上可见,setUp()相当于测试用例的前置条件,tearDown()相当于测试用例的执行后对数据及环境的后期处理。

1、setUpClass()和tearDownClass()

import unittest
class TestDemo(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        print("setupclass")

    def test_A(self):
        print("test_A")

    def test_a(self):
        print("test_a")

    def test_2(self):
        print("test_2")

    def gest_3(self):#故意将test写成gest,看是否会被执行
        print("gest_3")

    @classmethod
    def tearDownClass(cls):
        print("teardownclass")

if __name__ == '__main__':
        unittest.main()
运行结果:
...
---------------------------------------------------------------
Ran 3 tests in 0.000s

OK
setupclass
test_2
test_A
test_a
teardownclass

Process finished with exit code 0

2、setUp()和tearDown()

import unittest
class TestDemo(unittest.TestCase):
    def setUp(self):
        print("setUp")

    def test_A(self):
        print("test_A")

    def test_a(self):
        print("test_a")

    def test_2(self):
        print("test_2")

    def gest_3(self):#故意将test写成gest,看是否会被执行
        print("gest_3")

    def tearDown(self):
        print("tearDown")

if __name__ == '__main__':
        unittest.main()
运行结果:
...
---------------------------------------------------------------
Ran 3 tests in 0.000s

OK
setUp
test_2
tearDown
setUp
test_A
tearDown
setUp
test_a
tearDown

Process finished with exit code 0

从上面两个示例可以看到,每运行一个用例,都会执行一次setUp()和tearDown()方法;而执行所有用例,setUpClass()和tearDownClass()只需要执行一次。不难看出,后者配对使用最大的优势是节省测试时间,主要体现在两个方面:(1)不需要反复地打开浏览器操作(2)只需要建立一次数据库连接,并进行清理。

值得注意的是:在setUpClass()和tearDownClass()时,千万不要忽略了用例直接的相互影响,要充分考虑到用例之间的耦合

发布了46 篇原创文章 · 获赞 15 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_24601279/article/details/103040505
今日推荐