Coverage for tests/test_api.py: 100%
25 statements
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-20 08:07 +0000
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-20 08:07 +0000
1import requests # 匯入 requests 套件,用來進行 HTTP 請求
3# 設定 API 基本網址
4BASE_URL = "https://reqres.in/api"
6# 預設的 request headers,這裡使用測試 API 提供的 key(實際上可省略)
7HEADERS = {"x-api-key": "reqres-free-v1"}
10# 測試 GET:取得第 2 頁的用戶清單
11def test_get_users():
12 url = f"{BASE_URL}/users?page=2" # 目標 API 路徑
13 response = requests.get(url, headers=HEADERS) # 發送 GET 請求
14 print(f"狀態碼: {response.status_code}, 回應內容: {response.text}") # 印出回應內容
15 assert response.status_code == 200 # 確認 API 回傳 200 OK(成功)
18# 測試 POST:新增一位使用者
19def test_create_user():
20 url = f"{BASE_URL}/users" # 目標 API 路徑(建立新用戶)
21 payload = {
22 "name": "morpheus", # 使用者名稱
23 "job": "leader" # 使用者職稱
24 }
25 response = requests.post(url, json=payload, headers=HEADERS) # 發送 POST 請求並附上 JSON 資料
26 print(f"狀態碼: {response.status_code}, 回應內容: {response.text}")
27 assert response.status_code == 201 # 預期應回傳 201 Created(建立成功)
30# 測試 PUT:更新使用者資訊
31def test_update_user():
32 url = f"{BASE_URL}/users/2" # 更新 ID 為 2 的使用者
33 payload = {
34 "name": "morpheus", # 新的名稱
35 "job": "zion resident" # 新的職稱
36 }
37 response = requests.put(url, json=payload, headers=HEADERS) # 發送 PUT 請求(全量更新)
38 print(f"狀態碼: {response.status_code}, 回應內容: {response.text}")
39 assert response.status_code == 200 # 預期應回傳 200 OK
42# 測試 DELETE:刪除一位使用者
43def test_delete_user():
44 url = f"{BASE_URL}/users/2" # 刪除 ID 為 2 的使用者
45 response = requests.delete(url, headers=HEADERS) # 發送 DELETE 請求
46 print(f"狀態碼: {response.status_code}, 回應內容: {response.text}")
47 assert response.status_code == 204 # 預期應回傳 204 No Content(刪除成功無內容)