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.

Phương thức assertIsInstance() trong Python

Trong bài viết này, bạn sẽ học cách sử dụng phương thức assertIsInstance() của Python để kiểm tra xem một đối tượng có phải là một instance của một lớp cụ thể hay không. Đây là một trong những phương thức quan trọng của lớp TestCase trong module unittest, giúp bạn xác định xem đối tượng được kiểm tra có thuộc về lớp hoặc lớp cha của lớp đã chỉ định hay không. Qua các ví dụ minh họa cụ thể, bạn sẽ hiểu rõ hơn về cách sử dụng phương thức này cũng như phương thức ngược lại assertIsNotInstance(). Điều này sẽ giúp bạn xây dựng các bài kiểm thử hiệu quả và chính xác hơn trong quá trình phát triển phần mềm.

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ề phương thức assertIsInstance() của Python

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

Phương thức assertIsInstance() là một phương thức của lớp TestCase trong module unittest. Phương thức assertIsInstance() kiểm tra xem một đối tượng có phải là một instance của một lớp cụ thể hay không.

Cú pháp của phương thức assertIsInstance() như sau:

assertIsInstance(obj, cls, msg=None)

Trong đó:

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

  • obj là đối tượng cần kiểm tra.
  • cls là lớp hoặc một tuple chứa các lớp.
  • msg là một chuỗi tùy chọn sẽ được hiển thị nếu obj không phải là instance của lớp cls.

Bên trong, phương thức assertIsInstance() sử dụng hàm isinstance() để kiểm tra nếu đối tượng là một instance của lớp cls.

Nếu cls không phải là lớp của obj mà là lớp cha của lớp obj, kiểm tra vẫn sẽ thành công.

Do lớp object là lớp cha của tất cả các lớp, phương thức assertIsInstance(obj, object) luôn luôn thành công.

Ví dụ về phương thức assertIsInstance() của Python

Hãy tạo một module shape.py với hai lớp ShapeSquare. Lớp Shape là lớp cha của lớp Square:

class Shape:
    pass

class Square(Shape):
    pass

Ví dụ sử dụng phương thức assertIsInstance()

Ví dụ sau sử dụng phương thức assertIsInstance() để kiểm tra nếu đối tượng square là một instance của lớp Square:

import unittest
from shape import Shape, Square

class TestShape(unittest.TestCase):
    def setUp(self):
        self.square = Square()

    def test_is_instance(self):
        self.assertIsInstance(self.square, Square)

Chạy kiểm thử:

python -m unittest -v

Kết quả:

test_is_instance (test_shape.TestShape) ... ok

----------------------------------------------------------------------
Ran 1 test in 0.001s

OK

Bởi vì biến square là một đối tượng của lớp Square, kiểm thử sẽ thành công.

Ví dụ sử dụng phương thức assertIsInstance() với lớp cha

Ví dụ sau sử dụng phương thức assertIsInstance() để kiểm tra nếu square là một instance của lớp Shape:

import unittest
from shape import Shape, Square

class TestShape(unittest.TestCase):
    def setUp(self):
        self.square = Square()

    def test_is_instance(self):
        self.assertIsInstance(self.square, Square)

    def test_is_instance_of_parent_class(self):
        self.assertIsInstance(self.square, Shape)

Chạy kiểm thử:

python -m unittest -v

Kết quả:

test_is_instance (test_shape.TestShape) ... ok
test_is_instance_of_parent_class (test_shape.TestShape) ... ok

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

OK

Ví dụ sử dụng phương thức assertIsInstance() để kiểm tra nếu đối tượng là instance của lớp object

Ví dụ sau sử dụng phương thức assertIsInstance() để kiểm tra nếu biến square là một instance của lớp object:

import unittest
from shape import Shape, Square

class TestShape(unittest.TestCase):
    def setUp(self):
        self.square = Square()

    def test_is_instance(self):
        self.assertIsInstance(self.square, Square)

    def test_is_instance_of_parent_class(self):
        self.assertIsInstance(self.square, Shape)

    def test_is_instance_of_object(self):
        self.assertIsInstance(self.square, object)

Chạy kiểm thử:

python -m unittest -v

Kết quả:

test_is_instance (test_shape.TestShape) ... ok
test_is_instance_of_object (test_shape.TestShape) ... ok
test_is_instance_of_parent_class (test_shape.TestShape) ... ok

----------------------------------------------------------------------
Ran 3 tests in 0.001s

OK

Phương thức assertIsNotInstance() của Python

Phương thức assertIsNotInstance() là phương thức ngược lại của assertIsInstance(). Nó kiểm tra nếu một đối tượng không phải là instance của một lớp:

assertNotIsInstance(obj, cls, msg=None)

Ví dụ:

import unittest
from shape import Shape, Square

class TestShape(unittest.TestCase):
    def setUp(self):
        self.square = Square()

    def test_is_instance(self):
        self.assertIsInstance(self.square, Square)

    def test_is_instance_of_parent_class(self):
        self.assertIsInstance(self.square, Shape)

    def test_is_instance_of_object(self):
        self.assertIsInstance(self.square, object)

    def test_is_not_instance(self):
        shape = Shape()
        self.assertNotIsInstance(shape, Square)

Chạy kiểm thử:

python -m unittest -v

Kết quả:

test_is_instance (test_shape.TestShape) ... ok
test_is_instance_of_object (test_shape.TestShape) ... ok
test_is_instance_of_parent_class (test_shape.TestShape) ... ok
test_is_not_instance (test_shape.TestShape) ... ok

----------------------------------------------------------------------
Ran 4 tests in 0.002s

OK

Kết quả

Việc sử dụng phương thức assertIsInstance() của Python trong các bài kiểm thử đơn vị giúp đảm bảo rằng các đối tượng được kiểm tra là instance của các lớp mong đợi. Điều này rất quan trọng trong việc kiểm tra tính chính xác và toàn vẹn của mã nguồn. Bên cạnh đó, phương thức assertIsNotInstance() cũng rất hữu ích để đảm bảo rằng đối tượng không phải là instance của một lớp nhất định. Sử dụng hiệu quả hai phương thức này, bạn có thể nâng cao chất lượng và độ tin cậy của các bài kiểm thử, từ đó góp phần vào việc phát triển phần mềm chất lượng cao. Hy vọng qua hướng dẫn này, bạn đã nắm bắt được cách sử dụng assertIsInstance()assertIsNotInstance() trong unittest, và có thể áp dụng chúng vào dự án của mình một cách hiệu quả.

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