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 assertAlmostEqual() trong Python

Trong kiểm thử đơn vị (unit testing) với Python, việc so sánh các giá trị số thập phân có thể gặp khó khăn do tính chất không chính xác của số học dấu phẩy động. Để giải quyết vấn đề này, Python cung cấp phương thức assertAlmostEqual() trong mô-đun unittest. Phương thức này cho phép bạn kiểm tra xem hai giá trị có xấp xỉ bằng nhau hay không, giúp đảm bảo tính chính xác và ổn định của các bài kiểm thử liên quan đến số học dấu phẩy động. Trong bài viết này, bạn sẽ học cách sử dụng phương thức assertAlmostEqual() để thực hiện kiểm thử đơn vị hiệu quả cho các giá trị số thập phân.

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 assertAlmostEqual() trong Python

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

Phương thức assertAlmostEqual() là một phương thức của lớp TestCase trong mô-đun unittest. Phương thức này kiểm tra xem hai giá trị có xấp xỉ bằng nhau hay không bằng cách thực hiện các bước sau:

  • Tính toán sự khác biệt giữa hai giá trị.
  • Làm tròn sự khác biệt đến số chữ số thập phân đã cho (mặc định là 7).
  • So sánh giá trị sau khi làm tròn với số không.

Dưới đây là cú pháp của phương thức assertAlmostEqual():

assertAlmostEqual(first, second, places=7, msg=None, delta=None)

Phương thức này sử dụng kiểm tra sau:

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

round(first - second, 7) == 0

Phương thức assertAlmostEqual() sử dụng places (số chữ số thập phân) để làm tròn sự khác biệt trước khi so sánh nó với số không. Lưu ý rằng places không phải là các chữ số có nghĩa.

Nếu bạn truyền delta thay vì places, sự khác biệt giữa firstsecond phải nhỏ hơn hoặc bằng delta.

Phương thức assertAlmostEqual() cho phép bạn sử dụng hoặc places hoặc delta. Nếu bạn cố gắng truyền cả hai tham số, bạn sẽ gặp lỗi TypeError.

Ví dụ về phương thức assertAlmostEqual() trong Python

Đầu tiên, định nghĩa một hàm area() tính toán diện tích của một hình tròn trong tệp circle.py:

import math

def area(radius: float) -> float:
    return math.pi * math.pow(radius, 2)

Hàm area() nhận một bán kính dưới dạng float và trả về diện tích của hình tròn dưới dạng float.

Vì Python chỉ có thể biểu diễn các số float một cách xấp xỉ, bạn cần sử dụng phương thức assertAlmostEqual() để kiểm tra kết quả của hàm area() với một số float khác.

Ví dụ, kiểm tra sau đây sử dụng phương thức assertEqual() sẽ thất bại:

self.assertEqual(0.1 + 0.1 + 0.1, 0.3)

Tuy nhiên, kiểm tra sau đây sử dụng phương thức assertAlmostEqual() sẽ thành công:

self.assertAlmostEqual(0.1 + 0.1 + 0.1, 0.3)

Tiếp theo, định nghĩa một mô-đun kiểm tra test_circle.py và nhập mô-đun circle.py:

import unittest
from circle import area
from math import pi

class TestCircle(unittest.TestCase):
    def test_area(self):
        self.assertAlmostEqual(area(0), 0)
        self.assertAlmostEqual(area(1), pi)
        self.assertAlmostEqual(area(0.1), pi * 0.1 * 0.1)

Cách hoạt động:

  • Đầu tiên, định nghĩa lớp TestCircle kế thừa từ lớp TestCase.
  • Thêm phương thức kiểm tra test_area() vào lớp TestCircle.
  • Sử dụng phương thức assertAlmostEqual() để kiểm tra xem kết quả của hàm area() có xấp xỉ bằng 0, pi và pi * 0.1 * 0.1 hay không.

Sau đó, chạy kiểm tra:

python -m unittest -v

Kết quả:

test_area (test_circle.TestCircle) ... ok

----------------------------------------------------------------------
Ran 1 test in 0.000s

OK

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

Phương thức assertNotAlmostEqual() là phương thức ngược lại của assertAlmostEqual(). Nó kiểm tra xem hai giá trị có không xấp xỉ bằng nhau hay không.

Kết bài

Việc sử dụng phương thức assertAlmostEqual() trong kiểm thử đơn vị giúp đảm bảo tính chính xác của các phép tính số học dấu phẩy động trong mã nguồn của bạn. Bằng cách kiểm tra xem hai giá trị có xấp xỉ bằng nhau hay không, bạn có thể phát hiện sớm các lỗi tiềm ẩn liên quan đến tính toán số học. Điều này đặc biệt hữu ích khi làm việc với các giá trị thập phân hoặc khi kết quả cần có độ chính xác cao. Sử dụng assertAlmostEqual() sẽ giúp bạn viết các bài kiểm thử mạnh mẽ và tin cậy hơn, đồng thời nâng cao chất lượng và độ tin cậy của phần mềm bạn phát triển.

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