浅拷贝(Shallow Copy)和深拷贝(Deep Copy)是 Python 中两种不同的数据拷贝方式。
浅拷贝是一种拷贝数据的方式,它会创建一个新的对象,但这个新对象中的元素仍然是原始对象中元素的引用。换句话说,原始对象和浅拷贝对象共享相同的元素。当修改浅拷贝对象中的元素时,原始对象中的相应元素也会受到影响,因为它们实际上是同一个对象。
场景
1. 参数传递:在接口测试中,需要将某些参数传递给被测试的接口。使用浅拷贝可以确保参数在传递过程中不会被意外修改。
2. 数据备份:在处理数据时,可能需要创建数据的副本,以防止原始数据被修改。浅拷贝可以用于快速创建数据的浅层副本。
3. 错误恢复:在接口自动化中,可能会遇到错误情况。使用浅拷贝可以在出现错误时保留原始数据的状态,以便进行错误恢复。
4. 并行处理:如果需要在多个线程或进程中同时处理数据,浅拷贝可以用于创建数据的多个副本,以避免竞态条件。
5. 测试用例:在编写接口测试用例时,可以使用浅拷贝来创建测试数据的副本,以便在不同的测试场景中使用。
6. 数据模拟:浅拷贝可以用于创建模拟数据的副本,以满足不同的测试需求。
7. 日志记录:在记录接口调用的日志时,可以使用浅拷贝来保存参数的原始值,以便后续分析。
8. 数据验证:在验证接口返回的数据时,可以使用浅拷贝来比较原始数据和实际返回的数据。
9. 状态保存:在接口自动化的过程中,可能需要保存某个时刻的系统状态。浅拷贝可以用于创建状态的副本。
10. 配置管理:如果接口自动化涉及到配置参数的修改,浅拷贝可以用于保存配置的原始值,以便在需要时进行还原。
代码示例
import threading
import copy
# 1. 参数传递
def pass_parameter(data):
data.append(7)
return data
original_data = [1, 2, 3, 4, 5]
passed_data = pass_parameter(original_data.copy())
# 打印传递后的数据
print("传递后的数据:", passed_data)
# 2. 数据备份
original_data = [1, 2, 3, 4, 5]
backup_data = original_data.copy()
# 修改原始数据
original_data.append(6)
# 打印原始数据和备份数据
print("原始数据:", original_data)
print("备份数据:", backup_data)
# 3. 错误恢复
original_data = [1, 2, 3, 4, 5]
error_data = original_data.copy()
# 模拟出现错误的情况
original_data.append(6)
# 使用浅拷贝保留原始数据的状态
original_data = error_data
# 打印恢复后的数据
print("恢复后的数据:", original_data)
# 4. 并行处理
original_data = [1, 2, 3, 4, 5]
thread1 = threading.Thread(target=lambda: process_data(original_data.copy()))
thread2 = threading.Thread(target=lambda: process_data(original_data.copy()))
thread1.start()
thread2.start()
thread1.join()
thread2.join()
# 5. 测试用例
def test_case(data):
data.append(7)
return data
original_data = [1, 2, 3, 4, 5]
test_data = test_case(original_data.copy())
# 打印测试用例后的数据
print("测试用例后的数据:", test_data)
# 6. 数据模拟
original_data = [1, 2, 3, 4, 5]
simulated_data = [x * 2 for x in original_data.copy()]
# 打印模拟后的数据
print("模拟后的数据:", simulated_data)
# 7. 日志记录
original_data = [1, 2, 3, 4, 5]
logged_data = original_data.copy()
# 记录接口调用的日志
logged_data.append("接口调用成功")
# 8. 数据验证
def validate_data(data):
if len(data)!= 5:
return False
return True
original_data = [1, 2, 3, 4, 5]
validated_data = validate_data(original_data.copy())
# 打印验证后的数据
print("验证后的数据:", validated_data)
# 9. 状态保存
original_data = [1, 2, 3, 4, 5]
saved_data = original_data.copy()
# 保存状态
original_data.append(6)
# 10. 配置管理
original_config = {"username": "admin", "password": "123456"}
configured_data = original_config.copy()
# 修改配置
configured_data["username"] = "user"
# 还原配置
original_config = configured_data
# 打印配置
print("配置:", original_config)
行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群: 786229024,里面有各种测试开发资料和技术可以一起交流哦。
最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。