Web Application 是許多開發者經常接觸的一類應用程式。因此,開發者也很常為 Web 應用程式撰寫 Test Code。本篇文章將會介紹如何為 Web Application 撰寫 Test Code,幫助你更加了解這一重要的開發流程。
對於當前主流的 Python Web 應用程式框架,例如 Django、Flask 和 FastAPI,它們都提供了內建的測試工具,讓開發者能夠輕鬆撰寫測試代碼來確保應用程式的穩定性與可靠性。
在本文中,我將以 Flask 為例,詳細介紹如何使用內建的測試工具為 Web Application 撰寫 Test Code。
本次範例使用的是 Flask 2.3.3 版本
poetry add Flask==2.3.3
首先,我們可以使用 poetry new demo_flask
指令來建立一個新的專案目錄。接著,進入 /demo_flask/demo_flask
目錄,在該處創建一個名為 app.py
的檔案。
這份 Product Code 與先前介紹的 Flask 範例相似,該 Web Application 提供了一個 HTTP GET Endpoint,用戶可以透過這個端點來獲取帳號的詳細資訊。
from flask import Flask, jsonify, request
app = Flask(__name__)
@app.route("/accounts/<account_id>")
def get_account(account_id: str):
return f"Account {account_id}"
if __name__ == "__main__":
app.run(debug=True)
接著,我們需要在 /demo_flask/tests
目錄下建立一個名為 test_app.py
的測試檔案。此 Test Code 與之前的 pytest 範例相似,使用 Fixture
來封裝測試的 Arrange
階段。本次將封裝 Flask 提供的 test_client
,該工具能夠模擬使用者對 Web Application 的互動,依據 Test Code 中設定的 URL 和參數來發送請求。在此範例中,模擬的使用者會向 /accounts/john123
URL 發送請求。最後,我們會驗證 Web Application 回傳的資料是否符合預期,以確保系統的正確性。
import pytest
from demo_flask.app import app
@pytest.fixture
def client():
with app.test_client() as client:
yield client
def test_get_account_endpoint(client):
# Act
response = client.get("/accounts/john123")
# Assert
assert response.data == b"Account john123"
我們回到專案的根目錄,並執行 poetry run pytest
即可看到測試結果