前言

对于前文写到的以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'
}]

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

  1. 一个java的DES加解密类转换成C#

    原文:一个java的DES加解密类转换成C# 一个java的des加密解密代码如下: //package com.visionsky.util; import java.security.*; //i ...

  2. 一个java的DES加密解密类转换成C#

    一个java的des加密解密代码如下: //package com.visionsky.util; import java.security.*; //import java.util.regex.P ...

  3. 分享一个小工具:Excel表高速转换成JSON字符串

    在游戏项目中一般都须要由策划制作大量的游戏内容,当中非常大一部分是使用Excel表来制作的.于是程序就须要把Excel文件转换成程序方便读取的格式. 之前项目使用的Excel表导入工具都是通过Offi ...

  4. 用python把一个txt文件中所有逗号,替换成空格?

    string = "word 2 3 4 5 6 7" string = ",".join(string.split()) import numpy as np ...

  5. MYSQL: sql中某一个字段内容为用逗号分割的字符串转换成多条数据

    场景: 表名:testsuer id     name 1       小红,小李,李红,小法 要结果值为: 1     小红 1     小李 1     李红 1     小法 MYSQL函数解释 ...

  6. 知道内存中一个图片的指针IntPtr大小,转换成图片显示

    //nSize 为总长度//pImageData 为总数据//nImageSize //一个图片的长度 byte[] _bytes = new byte[nImageSize];// //IntPtr ...

  7. python 实用技巧:几十行代码将照片转换成素描图、随后打包成可执行文件(源码分享)

    效果展示 原始效果图 素描效果图 相关依赖包 # 超美观的打印库 from pprint import pprint # 图像处理库 from PIL import Image # 科学计算库 imp ...

  8. Python使用np.c_和np.r_实现数组转换成矩阵

    # -*- coding: utf-8 -*-"""Created on Sat Jun 30 14:49:22 2018 @author: zhen"&quo ...

  9. 输入一个十进制数N,将它转换成R进制数输出(运用递归实现)

    #include<stdio.h> int cnt=0;                             //用来记录每个进制存放的位置 char num[20];   //用来存 ...

随机推荐

  1. linux 安装 elasticsearch 步骤及问题解决方案

    1.下载安装包并上传至服务器 2.解压至当前文件夹 tar -xzvf xxx.tar.gz 3.配置JDK 如果服务器上已经配置了JDK,则在解压后的elasticsearch 文件夹的bin 目录 ...

  2. 【reverse】逆向5 标志寄存器

    [reverse]逆向5 标志寄存器 1.引言 通过一个creak.exe文件的爆破,引出现阶段需要学习的知识 2.标志寄存器 标志寄存器有上图这么多个 记住这几个寄存器的位置和名称 下面是6个状态标 ...

  3. 热词cloud-EChart安装

    1.安装npm install echarts npm install echarts-wordcloud注意版本:echarts版本5只能和wordcloud版本2的一起使用 :echarts版本4 ...

  4. 5种高大上的yml文件读取方式,你知道吗?

    原创:微信公众号 码农参上,欢迎分享,转载请保留出处. 在上一篇文章中,我们从源码角度分析了SpringBoot解析yml配置文件的全流程,那么我们今天就来点实战,总结一下除了烂大街的@Value和@ ...

  5. Docker 与 K8S学习笔记(十九)—— Pod的配置管理

    我们在部署应用时常常会考虑将应用程序与配置文件相分离,这样可以使应用程序更好的复用,并且通过不同配置也能实现更灵活的功能.将应用制作成镜像后,我们可以在启动容器时通过环境变量或挂载文件的方式注入,但是 ...

  6. springmvc复习导图

    spingmvcweb请求

  7. 集合框架-工具类-Arrays-asList方法

    1 package cn.itcast.p3.toolclass.arrays.demo; 2 3 import java.util.ArrayList; 4 import java.util.Arr ...

  8. JavaScript之详述闭包导致的内存泄露

    一.内存泄露 1. 定义:一块被分配的内存既不能使用,也不能回收.从而影响性能,甚至导致程序崩溃. 2. 起因:JavaScript的垃圾自动回收机制会按一定的策略找出那些不再继续使用的变量,释放其占 ...

  9. 在 Prim 算法中使用 pb_ds 堆优化

    在 Prim 算法中使用 pb_ds 堆优化 Prim 算法用于求最小生成树(Minimum Spanning Tree,简称 MST),其本质是一种贪心的加点法.对于一个各点相互连通的无向图而言,P ...

  10. Flutter 多引擎支持 PlatformView 以及线程合并解决方案

    作者:字节移动技术-李皓骅 摘要 本文介绍了 Flutter 多引擎下,使用 PlatformView 场景时不能绕开的一个线程合并问题,以及它最终的解决方案.最终 Pull Request 已经 m ...