Integration Test Trong Python: Hướng Dẫn Chi Tiết

Đăng ngày: 20/06/2026 • Tác giả: Quản trị viên
Integration Test Trong Python: Hướng Dẫn Chi Tiết

Integration Test Trong Python: Hướng Dẫn Chi Tiết

📌 Nội dung bài viết

1️⃣ Integration Test là gì?
2️⃣ Sự khác biệt giữa Unit Test và Integration Test
3️⃣ Công cụ phổ biến để viết Integration Test
4️⃣ Viết Integration Test với unittest
5️⃣ Viết Integration Test với pytest
6️⃣ Integration Test cho API (Flask/Django)
7️⃣ Tích hợp Integration Test vào CI/CD
8️⃣ Best Practices khi viết Integration Test

1. Integration Test là gì?

💡 Integration Test (Kiểm thử tích hợp) là quá trình kiểm thử sự tương tác giữa các module hoặc thành phần trong hệ thống.

🚀 Mục tiêu của Integration Test:

  • Kiểm tra các module hoạt động chính xác khi kết hợp với nhau.
  • Xác minh cách các API, cơ sở dữ liệu, và các dịch vụ bên ngoài tương tác.
  • Giảm thiểu lỗi khi triển khai hệ thống thực tế.

📌 Ví dụ thực tế:

  • Một ứng dụng web có Frontend, Backend, và Database → Kiểm tra xem Frontend có gọi API đúng cách không, và API có đọc dữ liệu đúng từ Database không.

2. Sự khác biệt giữa Unit Test và Integration Test

Đặc điểm Unit Test 🛠️ Integration Test 🔗
Mục đích Kiểm tra từng module/hàm riêng lẻ Kiểm tra sự kết hợp của nhiều module
Phạm vi Chỉ test một đơn vị nhỏ Test nhiều thành phần cùng lúc
Thời gian chạy Nhanh, vài mili-giây Chậm hơn, có thể mất vài giây/phút
Phụ thuộc Không phụ thuộc vào hệ thống bên ngoài Có thể phụ thuộc vào API, Database, UI

📌 Tóm lại:

  • Unit Test đảm bảo code nhỏ lẻ chạy đúng.
  • Integration Test đảm bảo các thành phần hoạt động đúng khi kết hợp.

3. Công cụ phổ biến để viết Integration Test

🔥 Các công cụ hỗ trợ Integration Test trong Python:
✔ unittest (có sẵn trong Python)
✔ pytest (hỗ trợ mạnh mẽ cho test API)
✔ requests (test API HTTP)
✔ Selenium (test UI cho web)
✔ mock (giả lập dữ liệu khi test)

4. Viết Integration Test với unittest

👉 Cài đặt (Python đã có sẵn unittest, không cần cài thêm).

🔹 Ví dụ: Test sự kết nối giữa hai module

Giả sử bạn có module math_utils.py:

def add(a, b):
    return a + b

def multiply(a, b):
    return a * b

👉 Tạo file test test_math_utils.py

import unittest
import math_utils

class TestMathIntegration(unittest.TestCase):
    def test_add_and_multiply(self):
        result = math_utils.multiply(math_utils.add(2, 3), 4)
        self.assertEqual(result, 20)  # (2+3) * 4 = 20

if __name__ == '__main__':
    unittest.main()

✅ Chạy test:

python test_math_utils.py

📌 Điểm chính:
✔ Test sự kết hợp giữa add() và multiply().
✔ Nếu một module thay đổi, test sẽ giúp phát hiện lỗi.

5. Viết Integration Test với pytest

🔥 pytest giúp viết Integration Test đơn giản hơn

👉 Cài đặt pytest

pip install pytest

🔹 Ví dụ: Test tích hợp API

Giả sử bạn có API Flask như sau:

📌 File app.py

from flask import Flask, jsonify

app = Flask(__name__)

@app.route('/api/hello', methods=['GET'])
def hello():
    return jsonify({"message": "Hello, World!"})

if __name__ == '__main__':
    app.run()

👉 Tạo file test test_app.py

import pytest
from app import app

@pytest.fixture
def client():
    app.testing = True
    return app.test_client()

def test_hello(client):
    response = client.get('/api/hello')
    assert response.status_code == 200
    assert response.json == {"message": "Hello, World!"}

✅ Chạy test:

pytest test_app.py

📌 Điểm chính:
✔ Dùng pytest.fixture để tạo client gọi API.
✔ Kiểm tra API trả về status code và dữ liệu JSON đúng.

6. Integration Test cho API (Flask/Django)

👉 Test API Flask:

def test_api(client):
    response = client.get('/api/data')
    assert response.status_code == 200
    assert "data" in response.json

👉 Test API Django với Django Test Client:

from django.test import TestCase, Client

class APITest(TestCase):
    def setUp(self):
        self.client = Client()

    def test_api(self):
        response = self.client.get('/api/data/')
        self.assertEqual(response.status_code, 200)

📌 Lợi ích:
✔ Kiểm tra API có hoạt động đúng không.
✔ Đảm bảo API trả về dữ liệu mong đợi.

7. Tích hợp Integration Test vào CI/CD

🔥 Tích hợp test vào GitHub Actions để kiểm tra code tự động

📌 Tạo file .github/workflows/test.yml

name: Integration Tests
on: [push]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Setup Python
        uses: actions/setup-python@v2
        with:
          python-version: '3.10'

      - name: Install dependencies
        run: pip install pytest flask

      - name: Run tests
        run: pytest

📌 Lợi ích:
✔ Tự động chạy test khi push code lên GitHub.
✔ Báo lỗi ngay lập tức nếu có lỗi test.

8. Best Practices khi viết Integration Test

✅ Luôn kiểm tra cả dữ liệu đầu vào và đầu ra
✅ Tránh phụ thuộc vào dữ liệu thật (dùng Mock)
✅ Viết test dễ đọc, dễ bảo trì
✅ Tích hợp test vào CI/CD để kiểm tra tự động

📌 Ví dụ về Mock API Response

import requests
from unittest.mock import patch

def get_data():
    response = requests.get("https://api.example.com/data")
    return response.json()

def test_get_data():
    with patch('requests.get') as mock_get:
        mock_get.return_value.json.return_value = {"data": "mocked"}
        assert get_data() == {"data": "mocked"}

📌 Lợi ích:
✔ Giảm thời gian test (không gọi API thật).
✔ Test ổn định, không bị ảnh hưởng bởi lỗi server API.

9. Tổng Kết

✔ Integration Test giúp kiểm tra sự kết nối giữa các module, API, database.
✔ Dùng unittest hoặc pytest để viết Integration Test dễ dàng.
✔ Tích hợp test vào CI/CD giúp kiểm tra code tự động.
✔ Dùng Mock để test nhanh hơn và ít phụ thuộc vào hệ thống bên ngoài.

 

Bài viết liên quan