PYTHON UNIT TESTING
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.

Sử dụng Test Fixtures trong Python

Trong quá trình phát triển phần mềm, việc kiểm thử là một phần không thể thiếu để đảm bảo tính ổn định và chất lượng của ứng dụng. Trong Python, mình có các fixture để chuẩn bị môi trường cần thiết trước khi thực hiện kiểm thử và dọn dẹp sau khi hoàn thành. Trong bài viết này, mình sẽ tìm hiểu về các loại fixture trong kiểm thử Python và cách sử dụng chúng để viết các kiểm thử hiệu quả và dễ bảo trì. Hãy cùng tìm hiểu nhé!

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Giới thiệu về Fixture trong Kiểm thử Python

Ph C6 B0 C6 A1ng 20th E1 BB A9c 20assert   20trong 20Python 20 1  png

Fixture trong kiểm thử là một hàm hoặc phương thức chạy trước và sau khi một khối mã kiểm thử được thực thi. Nói cách khác, đó là một bước được thực hiện trước hoặc sau một kiểm thử.

Fixture ở cấp độ module

Giả sử bạn có một module kiểm thử gọi là test_my_module.py. Trong test_my_module.py, các hàm setUpModule() và tearDownModule() là các fixture ở cấp độ module.

  • Hàm setUpModule() chạy trước tất cả các phương thức kiểm thử trong module kiểm thử.
  • Hàm tearDownModule() chạy sau tất cả các phương thức trong module kiểm thử.

Xem ví dụ sau:

Bài viết này được đăng tại [free tuts .net]

import unittest

def setUpModule():
    print('Đang chạy setUpModule')

def tearDownModule():
    print('Đang chạy tearDownModule')

class TestMyModule(unittest.TestCase):
    def test_case_1(self):
        self.assertEqual(5+5, 10)

    def test_case_2(self):
        self.assertEqual(1+1, 2)

Nếu bạn chạy kiểm thử:

python -m unittest -v

Kết quả sẽ là:

Đang chạy setUpModule
test_case_1 (test_my_module.TestMyModule) ... ok
test_case_2 (test_my_module.TestMyModule) ... ok
Đang chạy tearDownModule

----------------------------------------------------------------------
Ran 2 tests in 0.001s

OK

Trong ví dụ này, hàm setUpModule() chạy trước tất cả các phương thức kiểm thử và hàm tearDownModule() chạy sau tất cả các phương thức kiểm thử.

Fixture ở cấp độ lớp

Hàm setUpClass() và tearDownClass() là các fixture ở cấp độ lớp:

  • Hàm setUpClass() chạy trước tất cả các phương thức kiểm thử của một lớp.
  • Hàm tearDownClass() chạy sau tất cả các phương thức kiểm thử của một lớp.

Ví dụ:

import unittest

def setUpModule():
    print('Đang chạy setUpModule')

def tearDownModule():
    print('Đang chạy tearDownModule')

class TestMyModule(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        print('Đang chạy setUpClass')

    @classmethod
    def tearDownClass(cls):
        print('Đang chạy tearDownClass')

    def test_case_1(self):
        self.assertEqual(5+5, 10)

    def test_case_2(self):
        self.assertEqual(1+1, 2)

Nếu bạn chạy kiểm thử, bạn sẽ thấy kết quả như sau:

Đang chạy setUpModule
Đang chạy setUpClass
test_case_1 (test_my_module.TestMyModule) ... ok
test_case_2 (test_my_module.TestMyModule) ... ok
Đang chạy tearDownClass
Đang chạy tearDownModule

----------------------------------------------------------------------
Ran 2 tests in 0.001s

OK

Fixture ở cấp độ phương thức

Hàm setUp() và tearDown() là các fixture ở cấp độ phương thức:

  • Hàm setUp() chạy trước mỗi phương thức kiểm thử trong một lớp kiểm thử.
  • Hàm tearDown() chạy sau mỗi phương thức kiểm thử trong một lớp kiểm thử.

Ví dụ:

import unittest

def setUpModule():
    print('Đang chạy setUpModule')

def tearDownModule():
    print('Đang chạy tearDownModule')

class TestMyModule(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        print('Đang chạy setUpClass')

    @classmethod
    def tearDownClass(cls):
        print('Đang chạy tearDownClass')

    def setUp(self):
        print('')
        print('Đang chạy setUp')

    def tearDown(self):
        print('Đang chạy tearDown')

    def test_case_1(self):
        print('Đang chạy test_case_1')
        self.assertEqual(5+5, 10)

    def test_case_2(self):
        print('Đang chạy test_case_2')
        self.assertEqual(1+1, 2)

Kết quả của kiểm thử sẽ là:

Đang chạy setUpModule
Đang chạy setUpClass
Đang chạy setUp
Đang chạy test_case_1
Đang chạy tearDown
.
Đang chạy setUp
Đang chạy test_case_2
Đang chạy tearDown
.
Đang chạy tearDownClass
Đang chạy tearDownModule

----------------------------------------------------------------------
Ran 2 tests in 0.002s

OK

Trong ví dụ này, hàm setUp() và tearDown() chạy trước và sau mỗi phương thức kiểm thử, bao gồm test_case_1() và test_case_2().

Kết bài

Trong bài viết này, mình đã tìm hiểu về các fixture trong kiểm thử Python, bao gồm setUp(), tearDown(), setUpClass(), tearDownClass(), setUpModule() và tearDownModule(). Các fixture này giúp chuẩn bị môi trường cần thiết trước khi thực hiện kiểm thử và dọn dẹp sau khi hoàn thành, giúp việc viết các kiểm thử trở nên dễ dàng và hiệu quả hơn.

Việc sử dụng fixture giúp mình tái sử dụng code, giảm thiểu sự lặp lại và tạo ra các kiểm thử linh hoạt và dễ bảo trì. Hi vọng bài viết này đã cung cấp cho bạn cái nhìn tổng quan và kiến thức cần thiết để bắt đầu sử dụng fixture trong quá trình kiểm thử của mình. Hãy áp dụng những kiến thức này vào công việc của bạn và tạo ra các kiểm thử chất lượng cho ứng dụng của mình. Chúc bạn thành công!

Cùng chuyên mục:

Cách thêm Progress Bar trong Python với chỉ một dòng Code

Cách thêm Progress Bar trong Python với chỉ một dòng Code

Toán tử Walrus Operator- Tính năng mới trong Python 3.8

Toán tử Walrus Operator- Tính năng mới trong Python 3.8

Cách nạp dữ liệu Machine Learning từ File trong Python

Cách nạp dữ liệu Machine Learning từ File trong Python

Hướng dẫn sử dụng Google Sheets API với Python

Hướng dẫn sử dụng Google Sheets API với Python

Xây dựng  web Python tự động hóa Twitter | Flask, Heroku, Twitter API & Google Sheets API

Xây dựng web Python tự động hóa Twitter | Flask, Heroku, Twitter API & Google Sheets API

Xây dựng Web Machine Learning đẹp mắt với Streamlit và Scikit-learn trong Python

Xây dựng Web Machine Learning đẹp mắt với Streamlit và Scikit-learn trong Python

Hướng dẫn tạo Chatbot đơn giản bằng PyTorch

Hướng dẫn tạo Chatbot đơn giản bằng PyTorch

11 mẹo và thủ thuật để viết Code Python hiệu quả hơn

11 mẹo và thủ thuật để viết Code Python hiệu quả hơn

Hướng dẫn làm ứng dụng TODO với Flask dành cho người mới bắt đầu trong Python

Hướng dẫn làm ứng dụng TODO với Flask dành cho người mới bắt đầu trong Python

Hướng dẫn viết Snake Game bằng Python

Hướng dẫn viết Snake Game bằng Python

Cách sử dụng chế độ interactive trong Python

Cách sử dụng chế độ interactive trong Python

Cách sử dụng Python Debugger với hàm breakpoint()

Cách sử dụng Python Debugger với hàm breakpoint()

Xây dựng ứng dụng Web Style Transfer với PyTorch và Streamlit

Xây dựng ứng dụng Web Style Transfer với PyTorch và Streamlit

Cách cài đặt Jupyter Notebook trong môi trường Conda và thêm Kernel

Cách cài đặt Jupyter Notebook trong môi trường Conda và thêm Kernel

Hướng dẫn xây dựng ứng dụng dự đoán giá cổ phiếu bằng Python

Hướng dẫn xây dựng ứng dụng dự đoán giá cổ phiếu bằng Python

Hướng dẫn tạo ứng dụng AI hội thoại với NVIDIA Jarvis trong Python

Hướng dẫn tạo ứng dụng AI hội thoại với NVIDIA Jarvis trong Python

Hỗ trợ Async trong Django 3.1

Hỗ trợ Async trong Django 3.1

8 mẹo tái cấu trúc Python giúp mã sạch hơn và Pythonic

8 mẹo tái cấu trúc Python giúp mã sạch hơn và Pythonic

Ý nghĩa của if __name__ ==

Ý nghĩa của if __name__ == "__main__" trong Python

Cách xóa phần tử trong danh sách Python

Cách xóa phần tử trong danh sách Python

Top