unittest 中的夹具(Fixture)

Python 测试入门

Alexander Levin

Data Scientist

夹具回顾

  • 夹具(Fixture)
    • 测试所需的预置环境
    • 将准备与测试代码分离
  • 夹具设置:为测试配置资源
  • 夹具拆卸:清理已分配的资源
  • 类比:野餐前准备食物,结束后清理
Python 测试入门

unittest 库中的夹具

  • unittest 中的夹具:执行测试所需的准备
  • .setUp():在实际测试前准备测试夹具
  • .tearDown():在测试后清理环境
1 https://docs.python.org/3/library/unittest.html
Python 测试入门

示例代码

import unittest

class TestLi(unittest.TestCase):
    # Fixture setup method
    def setUp(self):
        self.li = [i for i in range(100)]

    # Fixture teardown method
    def tearDown(self):
        self.li.clear()

    # Test method
    def test_your_list(self):
        self.assertIn(99, self.li)
        self.assertNotIn(100, self.li)
Python 测试入门

U 大写,D 大写

  • 正确写法:setUpU 大写,tearDownD 大写。

    class TestLi(unittest.TestCase):
      # Fixture setup method
      def setUp(self):
          self.li = [i for i in range(100)]
    
      # Fixture teardown method
      def tearDown(self):
          self.li.clear()
    
Python 测试入门

示例输出

命令:python3 -m unittest test_in_list.py

包含 .setUp().tearDown() 的运行输出:

带有夹具的运行输出

Python 测试入门

方法命名不正确

使用 .set_up() 运行的输出:

夹具名称错误时的运行输出

Python 测试入门

总结

  • unittest 中的夹具(Fixture):为执行一项或多项测试做的准备
  • 创建夹具:
    • 实现 .setUp() 方法
    • 实现 .tearDown() 方法
  • .setUp():在测试前准备夹具
  • .tearDown():在测试后清理环境
Python 测试入门

¡Vamos a practicar!

Python 测试入门

Preparing Video For Download...