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

1import requests # 匯入 requests 套件,用來進行 HTTP 請求 

2 

3# 設定 API 基本網址 

4BASE_URL = "https://reqres.in/api" 

5 

6# 預設的 request headers,這裡使用測試 API 提供的 key(實際上可省略) 

7HEADERS = {"x-api-key": "reqres-free-v1"} 

8 

9 

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(成功) 

16 

17 

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(建立成功) 

28 

29 

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 

40 

41 

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(刪除成功無內容)