Selenium26-测试固件

Fixture(测试固件)

  • Fixture(测试固件、也叫作测试夹具),书写在TestCase代码中的代码结构,用于前期初始化准备和后期清理收尾工作
  • 本质就是一些名称固定的方法

测试固件分类

  • 方法级别
    • 是普通方法,包含在每个测试方法执行前后都会执行的工作内容
  • 类级别
    • 是类方法,用@classmethod装饰,可以在每个测试类中所有方法执行前后都会执行的内容,在整个类中,执行前后各一次

方法级别

  • 每个测试方法运行前运行,测试前的初始化工作。一条用例执行一次,若N次用例就执行N次,根据用例的数量来定
    def setUp(self):
    
  • 每个测试方法运行结束后运行,测试后的清理工作。一条用例执行一次,若N次用例就执行N次
    def tearDown(self):
    

类级别

  • 所有的测试方法运行前运行,做前期准备,必须使用
    # 装饰器进行修饰,整个类中只执行一次
    @classmethod 
    def setUpClass(cls):
    
  • 所有的测试方法运行结束后运行,做后期清理工作,必须使用
    # 装饰器进行修饰,整个类中只执行一次
    @classmethod
    def tearDownClass(cls):
    

顺序和次数

  • 类级别的测试固件:setUpClass和tearDownClass
    • 在整个类运行期间只执行一次
  • 方法级别测试固件:setUp和tearDown
    • 在每个测试方法执行前后都执行一次,有几个测试方法就会执行几次
  • 测试方法
    • 默认按照方法名称排序执行
    • 不是按照代码书写位置排序执行
import unittest
from calculate import Cal

class MyTestCase(unittest.TestCase):
    @classmethod
    def setUpClass(cls) -> None:
        print("类级别测试固件,负责整个类运行开始时的准备工作")
    @classmethod
    def tearDownClass(cls) -> None:
        print("类级别测试固件,负责整个类运行结束后的收尾工作")

    def setUp(self) -> None:
        print("方法级别测试固件,每个测试方法执行前的准备工作")
    def tearDown(self) -> None:
        print("方法级别测试固件,每个测试方法执行后的收尾工作")
    def test_add1(self):
        c1 = Cal(10,20)
        self.assertEqual(30, c1.add())  # add assertion here

    def test_add2(self):
        c1 = Cal(1.5,2.5)
        self.assertEqual(4, c1.add())  # add assertion here
    @unittest.skip("先不执行test_sub1的测试")
    def test_sub1(self): # 断言失败,问题原因未考虑数据先后顺序
        c1 = Cal(1.5,2.5)
        self.assertEqual(1, c1.sub())  # add assertion here
if __name__ == '__main__':
    unittest.main()

posted @ 2022-12-26 16:42  暄总-tester  阅读(69)  评论(0)    收藏  举报