Phthon3 学习记录-0613
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 = {