python-对于一个用例有多个步骤,转换成1条案例的处理方法

前言

对于前文写到的以excel数据驱动的框架中,每个用例都是单独的不依赖其他的案例,现在一个用例可能会有多个步骤,按照前面写道的博文中按excel表中逐行取出excel的值,那么一条用例有多个步骤,取出的数据有多行数据,现在需要对这种情况进行处理

实现过程用到的关键点


# setdefault修改字典,key存在,不修改原来键值的内容;key不存在,添加到字典中
# 字典名[key] =  value   key存在修改原来键值内容,key不存在,添加到字典中
list1 = {"name":"liujingling","age":25,"sex":"woman"}
# list1.setdefault("sex","man")
# print(list)     #sex键的值不变

list1["sex"] = "man"
print(list1)   #sex键的值变

将如下样式的数据格式进行优化

list1 = 
[{
		'测试用例编号': 'case01',
		'测试用例名称': '测试能否正确执行*******接口',
		'测试用例步骤': 'step_01',
                 ...................

}, {
		'测试用例编号': 'case02',
		'测试用例名称': '测试能否正确新增******',
		'测试用例步骤': 'step_01',
                 ...................
}, {
		'测试用例编号': 'case02',
		'测试用例名称': '测试能否正确新增*****',
		'测试用例步骤': 'step_02',
                ...................
}]

优化步骤1

实现代码:
case_dict = {}
for i in list1:
    case_dict.setdefault(i['测试用例编号'],[]).append(i)
print(case_dict)        #优化成下面形式
----------------------------------------------------------------------------
{
	'case01': [{
		'测试用例编号': 'case01',
		'测试用例名称': '测试能否正确执行*******接口',
		'测试用例步骤': 'step_01',
                 ...................
	}],
	'case02': [{
		'测试用例编号': 'case02',
		'测试用例名称': '测试能否正确新增******',
		'测试用例步骤': 'step_01',
                 ...................
	}, {
		'测试用例编号': 'case02',
		'测试用例名称': '测试能否正确新增*****',
		'测试用例步骤': 'step_02',
                ...................
	}]
}


优化步骤2:


实现代码:
list2 = []
for k,v in case_dict.items():
    dict2 = {}
    dict2['test_case']= k
    dict2['test_info']= v
    list2.append(dict2)
print(list2)              #优化成如下形式

--------------------------------------------------------------------------------
[{
	'test_info': [{
		'测试用例编号': 'case01',
		'测试用例名称': '测试能否正确执行获取*****接口',
		'测试用例步骤': 'step_01',
                ...................
	}],
	'test_case': 'case01'
}, {
	'test_info': [{
		'测试用例编号': 'case02',
		'测试用例名称': '测试能否正确新增*****',
		'测试用例步骤': 'step_01',
                ...................
	}, {
		'测试用例编号': 'case02',
		'测试用例名称': '测试能否正确新增*****',
		'测试用例步骤': 'step_02',
                ...................
	}],
	'test_case': 'case02'
}]


原文地址:https://www.cnblogs.com/ritaliu/p/13434380.html