Python测试用例-unittest-基础

把'坚持'坚持成你的天赋! / 2023-07-26 / 原文

一个简单的测试用例脚本

import unittest


class TestCase(unittest.TestCase):
    @classmethod
    def setUpClass(cls) -> None:
        cls.abc = 1
        print(f"setUpClass: cls.abc={cls.abc}")

    def setUp(self) -> None:
        print(f"setUp: self.abc={self.abc}")

    def tearDown(self) -> None:
        print(f"tearDown: self.abc={self.abc}")

    def test_task_1(self):
        self.abc += 1
        print("test_task 1 done !")

    def test_task_2(self):
        self.abc += 1
        print("test_task 2 done !")

    @classmethod
    def tearDownClass(cls) -> None:
        print(f"tearDownClass: cls.abc={cls.abc}")


if __name__ == '__main__':
    unittest.main()

运行过程:(根据print看不出先后,可以通过debug打断点全部走一下流程)
setUpClass -> setUp -> test_task_1 -> tearDown -> setUp -> test_task_2 -> tearDown -> tearDownClass
运行结果:
setUpClass: cls.abc=1
setUp: self.abc=1
test_task 1 done !
tearDown: self.abc=2
setUp: self.abc=1
test_task 2 done !
tearDown: self.abc=2
tearDownClass: cls.abc=1

说明:

  1. setUpClasstearDownClass在测试用例类TestCase开始和结束时候运行一次,按需编码,必须加@classmethod,作为类方法实现
  2. setUptearDown在测试用例类TestCase中的每一个测试用例method的开始和结束都会运行一次,以正常的对象方法实现
  3. setUpClasstearDownClass 中的变量可以传递到用例方法中使用
  4. setUptearDown中的变量一样可以传递到用例方法中使用
  5. 结合3和4,需要注意的是,每次setUp都会重置初始化传递的变量值