Teardown cho fixture

Nhập môn Kiểm thử trong Python

Alexander Levin

Data Scientist

Teardown của fixture là gì

  • Teardown của fixture: quy trình dọn ("tháo dỡ") tài nguyên đã cấp phát hoặc tạo trong bước setup môi trường kiểm thử.

Nhớ ví dụ "dã ngoại":

  1. Mời bạn bè và chuẩn bị đồ ăn
  2. Vui chơi!
  3. Dọn dẹp - chính là teardown
Nhập môn Kiểm thử trong Python

Vì sao dùng teardown

Cần dọn môi trường sau mỗi test. Nếu không dùng teardown, có thể gây ra:

  • Rò rỉ bộ nhớ
  • Chạy chậm, giảm hiệu năng
  • Kết quả test sai
  • Lỗi, hỏng pipeline
Nhập môn Kiểm thử trong Python

Khi nào dùng

Khi dùng:

  • Đối tượng lớn
  • Nhiều hơn một test
  • Dùng autouse

Khi không cần:

  • Một script đơn giản với một test
Nhập môn Kiểm thử trong Python

Đánh giá lười (lazy) trong Python

  • yield là từ khóa Python giúp tạo generator
# Ví dụ hàm generator
def lazy_increment(n):
    for i in range(n):
        yield i
f = lazy_increment(5)
next(f) # 0
next(f) # 1
next(f) # 2
Nhập môn Kiểm thử trong Python

Cách dùng

Cách dùng:

  • Thay return bằng yield
  • Đặt mã teardown sau yield
  • Mã setup chỉ ở trước yield
Nhập môn Kiểm thử trong Python

Ví dụ 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
Nhập môn Kiểm thử trong Python

Tóm tắt

  • Định nghĩa: Teardown của fixture là quy trình dọn tài nguyên đã cấp phát trong bước setup.
  • Cách dùng:
    • Dùng yield thay cho return
    • Mã teardown đặt sau yield
  • Ưu điểm:
    • Tránh lỗi phần mềm
    • Tránh giảm hiệu năng
  • Khi dùng: Luôn dùng khi có nhiều hơn một test!
Nhập môn Kiểm thử trong Python

Vamos praticar!

Nhập môn Kiểm thử trong Python

Preparing Video For Download...