Fixture 的拆卸(Teardown)

Python 测试入门

Alexander Levin

Data Scientist

什么是 fixture teardown

  • Fixture Teardown:清理在测试环境设置中分配或创建的资源("拆除")。

回顾"野餐"类比:

  1. 邀请朋友并准备食物
  2. 尽情玩乐
  3. 清理收尾——这就是 teardown
Python 测试入门

为何使用 teardown

在测试结束时清理环境很重要。若不使用 teardown,可能导致:

  • 内存泄漏
  • 执行变慢与性能问题
  • 测试结果不准确
  • 流水线失败与错误
Python 测试入门

何时使用

何时使用:

  • 大对象
  • 多于一个测试
  • 使用 autouse

何时可不必:

  • 单个简单脚本且仅一个测试
Python 测试入门

Python 的惰性求值

  • yield 是 Python 关键字,用于创建生成器
# Example of generator function
def lazy_increment(n):
    for i in range(n):
        yield i
f = lazy_increment(5)
next(f) # 0
next(f) # 1
next(f) # 2
Python 测试入门

如何使用

使用方法:

  • yield 替换 return
  • 将拆卸代码放在 yield 之后
  • 确保设置代码只在 yield 之前
Python 测试入门

Teardown 示例

@pytest.fixture
def init_list():
    return []

@pytest.fixture(autouse=True)
def add_numbers_to_list(init_list):
    # Fixture Setup
    init_list.extend([i for i in range(10)])
    # Fixture output
    yield init_list
    # Teardown statement
    init_list.clear()

def test_9(init_list):
    assert 9 in init_list
Python 测试入门

小结

  • 定义:Fixture Teardown 是清理由设置阶段分配的资源的过程。
  • 用法:
    • 使用 yield 替代 return
    • yield 之后编写拆卸代码
  • 优点:
    • 预防软件故障
    • 避免潜在的性能下降
  • 何时使用:当有多个测试时务必使用!
Python 测试入门

Passons à la pratique !

Python 测试入门

Preparing Video For Download...