List(列表)、Tuple(元組)、Set(集合)和 Dictionary(字典)
在接口自動化測試中,List(列表)、Tuple(元組)、Set(集合)和 Dictionary(字典)這些數據結構都有各自獨特的用途。以下通過一個簡單的接口自動化測試示例來展示它們的用法及區別。
假設我們正在測試一個獲取用戶信息的接口,接口返回的數據類似如下:
{"users": [{"id": 1,"name": "Alice","email": "alice@example.com"},{"id": 2,"name": "Bob","email": "bob@example.com"}]
}
List(列表)
列表是有序且可變的。在接口自動化中,常用于存儲一系列相關的數據,比如接口返回的多個用戶信息。
import requestsdef test_get_users():response = requests.get('http://example.com/api/users')if response.status_code == 200:data = response.json()users_list = data.get('users', [])# 遍歷列表獲取每個用戶信息for user in users_list:print(f"User ID: {user['id']}, Name: {user['name']}, Email: {user['email']}")# 修改列表中的數據(假設接口支持更新用戶信息)if users_list:users_list[0]['name'] = 'UpdatedAlice'print(f"Modified User: {users_list[0]}")
Tuple(元組)
元組也是有序的,但它是不可變的。在接口測試中,可用于存儲一些固定不變的數據,例如接口的固定請求頭
import requestsdef test_get_users_with_fixed_headers():fixed_headers = ('Content-Type', 'application/json')response = requests.get('http://example.com/api/users', headers=dict([fixed_headers]))if response.status_code == 200:print("Request successful with fixed headers")
Set(集合)
集合是無序且不包含重復元素的。在接口自動化中,可用于檢查接口返回的數據中是否存在重復的元素,比如重復的用戶 ID。
import requestsdef test_check_unique_user_ids():response = requests.get('http://example.com/api/users')if response.status_code == 200:data = response.json()user_ids = set()users_list = data.get('users', [])for user in users_list:user_id = user['id']if user_id in user_ids:print(f"Duplicate user ID: {user_id}")else:user_ids.add(user_id)print(f"Unique user IDs: {user_ids}")
Dictionary(字典)
字典是無序的鍵值對集合。在接口自動化中,廣泛用于處理接口的請求參數、響應數據等,因為它可以方便地通過鍵來訪問值。
import requestsdef test_get_user_by_id():user_id = 1request_params = {'id': user_id}response = requests.get('http://example.com/api/user', params=request_params)if response.status_code == 200:user_data = response.json()print(f"User Name: {user_data.get('name')}, Email: {user_data.get('email')}")
#!/usr/bin/python3dict = {}
dict['one'] = "1 - 菜鳥教程"
dict[2] = "2 - 菜鳥工具"tinydict = {'name': 'runoob','code':1, 'site': 'www.runoob.com'}print (dict['one']) # 輸出鍵為 'one' 的值
print (dict[2]) # 輸出鍵為 2 的值
print (tinydict) # 輸出完整的字典
print (tinydict.keys()) # 輸出所有鍵
print (tinydict.values()) # 輸出所有值
????????區別總結
- List(列表):有序、可變,適用于需要順序存儲且可能需要修改的數據,如接口返回的多個對象列表。
- a?=?[1,?2,?3,?4,?5,?6]
- Tuple(元組):有序、不可變,適合存儲固定不變的數據,如固定的請求頭信息。
- tuple?=?(?'abcd',?786?,?2.23,?'runoob',?70.2??)
- Set(集合):無序、不重復,用于需要確保元素唯一性的場景,比如檢查接口返回數據中是否有重復值。
- sites?=?{'Google',?'Taobao',?'Runoob',?'Facebook',?'Zhihu',?'Baidu'}
print(sites)???# 輸出集合,重復的元素被自動去掉
- sites?=?{'Google',?'Taobao',?'Runoob',?'Facebook',?'Zhihu',?'Baidu'}
- Dictionary(字典):無序的鍵值對,便于通過鍵快速查找對應的值,常用于處理請求參數和解析響應數據。
- data = {
? ? ? ? "username": "test_user",
? ? ? ? "password": "test_password"
? ? }
- data = {