Lời mở đầu
Hello everyone, long time no see, nay tôi sẽ trở lại với bài dịch liên quan đến một bước crucial trong software development. Đó là 👉️ Testing. Mỗi ngôn ngữ lập trình đều có một số lượng lớn công cụ dùng để kiểm thử phần code. Và Python cũng thế. Tuy nhiên với thư viện Pandas thì việc này không thực sự phổ biến. Trong bài viết, tác giả cũng có đề cập hai nguyên nhân vì Pandas có thể khó hơn trong việc test các cú pháp code Python thông thường hoặc nó thường được sử dụng bởi các chuyên gia hơn các lập trình viên.
Tuy nhiên, testing là một giai đoạn trong software development do đó không nên việc biết một số tools để làm dễ dàng quá trình này.
Okay, và bài dịch ngày hôm nay về một chủ đề khá mới bắt đầu thoi nào!!!
Nội dung
Using Pytest
Pytest là một tool rất phổ biến và đơn giản để testing code. Đối với một số tools khác, nó yêu cầu cần định nghĩa các class cho mỗi lượt testing, điều này vô tình make this a bit more cumbersome. Với Pytest nó đơn giản và dễ dàng hơn.
Install Pytest
Để sử dụng nó, chúng ta có thể dùng câu lệnh:
pip install pytest
Các bạn có thể tìm hiểu kỹ hơn về nó tại 👉️ Pytest
Ví dụ với Pytest
Ví dụ tôi muốn kiểm thử đoạn code để tính tổng của hai số dưới đây:
# operations.py
def sum_a_and_b(a, b): return a + b
Tôi viết đoạn code vào file <name>.py ( ví dụ như operations(a, b)...).
Để testing đoạn code trên, tôi thực hiện một số bước dưới đây:
-
Viết đoạn code trên vào một file .py ( ví dụ như operations.py)'
-
Tạo một file .py khác để testing đoạn code trên (ví dụ như test_operations.py)
-
Viết đoạn code để testing hàm sum_a_and_b(a, b):
-
Import hàm tính tổng từ file operations(a, b)
from operations import sum_a_and_b as sum
-
Viết một function để thực hiện testing hàm tính tổng:
def test_sum(): result = sum_a_and_b(1, 2) assert result == 3
-
Chạy file testing với terminal:
- cd vào thư mục chứa file testing
- Chạy code trong file testing với type pytest
-
Check kết quả
-
👉️👉️👉️ Mọi người có thể tìm hiểu kỹ hơn về một số điểm mạnh của pytest tại khóa học này Python Automatic Pytest
Cách viết một bài test chuẩn
Dựa theo ý kiến của tác giả bài viết
Beyond the Happy Path
Phiên bản test Happy path là phiên bản testing version 1 thường là phiên bản chúng ta espect đầu tiên. Đây là trường hợp đơn giản nhất và là vấn đề chúng ta cần hàm giải quyết đầu tiên. Tuy nhiên chúng ta cũng cần có những trường hợp gọi là the edge cases để đánh giá được function 100%.
Testing Principles
For unit tests, it’s a good rule of thumb to remember that tests should always follow the common “arrange/act/assert” structure.
Các bước gồm:
- arrange : những thứ cần để testing như tạo data cần thiết, chuẩn bị in-memory database hay mocking API call...
- act: hàm hoặc phương thức để gọi nó
- assert: expected output.
‼️ Lưu ý rằng, mọi người nếu muốn unit test mang tính tương tác với user thì có thể sử dụng ba type sau: given/when/then
- Given: những gì bạn cần để chạy chương trình test
- When: có tính tương tác
- Then: expected outcome
Take Your Time Naming Everything Correctly
Tài liệu tham khảo:
- Pandas Code Testing Guide for New Python Developers - https://hackernoon.com/pandas-code-testing-guide-for-new-python-developers
- Trang chủ: https://pypi.org/project/pytest/
Lời cảm ơn
Trước tiên, tôi xin cảm ơn anh Eduardo Motta de Morae - tác giả bài viết. Cảm ơn mọi người đã đọc phần dịch chia sẻ của tôi. Cảm ơn rất nhiều.
Hy vọng mọi người sẽ tổng hợp và đóng góp tại email bên dưới.