反思:

1 解决 问题的思路 绕远了:

在这个问题出现前,程序是运行正确 的

问题出现前,我误删了DB 的 testcase表的所有 case ,然后 再把邮件 中的excel数据导入到 DB

然后 所有 选 房卡(查改删)的case就跑不通了(有关联的case)

查原因:增加选房卡是可以 执行的,但是没有 correlation的数据源有问题,导致程序没有正确的找到cardid字段,所以后面依赖cardid的 查改删 接口就都 不能跑通了

所以正确解决 问题的思路 应该 是:1.程序没有 变,更新数据后,突然就跑不通了,应该 先检查数据源是否出现 了异常(简化程序,只保留与源数据相关的代码 ),而不是怀疑程序出bug了,进入随机调试模式 很恐怖

要改进的:

这次事情的起因 是 tester要更新case,先删除她以前的case,再重新导入新的case(因为有重复的),但是不小心把所有 的case都删除 了,反思自己不能直接操作数据

应该给tester开放权限 ,首先先在测试库测试 通过自己的case,然后再把case导入到数据库

另外应该 有一个页面对case进行批量增删改查,而不应该 是直接 用sql语句 操作数据库,误操作风险太大

这个问题 我用了将近5个小时解决 。3个小时去排查定位问题,2个小时修复数据 。如果有对case批量增删改查的页面,我就可以 解放我自己,让tester们自己操作case,我只负责逻辑 ,而不用再去维护 case

遇到一个坑,还没想明白 是怎么回事

坑:为什么从DB(正确 ${cardid}=[data][cardid]')导出到EXCEL,再把EXCLE的数据导入到DB(错误 ["['${cardid}=[data][cardid]']"]

),数据的格式 就错了呢

 

怎么这个问题反反复复的出现呢(原来是数据源的问题,是数据源反反复复出问题了啊)

重新上传excel后,数据源发生错误 了

["['${cardid}=[data][cardid]']"] #错误
['${cardid}=[data][cardid]']#正确

调试技巧:代码也没有改,只是更新了数据 ,程序就出错了,很明显不应该 检查 程序,而应该先从数据源检查起啊

调试代码

简化程序,只保留能复现bug的最小代码

打印每1个变量的值

大的表达式拆分为小的表达式

 1 import re
2
3 resp = {
4 "status": "200",
5 "msg": "OK",
6 "isPC": 1,
7 "data": {
8 "falg": 1,
9 "cardid": 150288,
10 "count": 0,
11 "msg": "保存选房卡条件数据成功!"
12 }
13 }
14
15 correlationDict={}
16 ["['${cardid}=[data][cardid]']"] #数据源错了
17 ['${cardid}=[data][cardid]']#正确的数据应该 是没有 外面一层[]的
18 correlation=['${cardid}=[data][cardid]']
19 n = len(correlation)# n = 1
20 for j in range(len(correlation)):
21 param = correlation[j].split("=")
22 if len(param) == 2:
23 if param[1] == "" or not re.search(r'^\[', param[1]) or not re.search(r'\]', param[1]):
24 continue
25 value = resp
26
27 for key in param[1][1:-1].split("]["):
28 try:
29 temp = value[int(key)]
30 except:
31 try:
32 temp = value[key]
33 except:
34 break
35 value = temp
36 correlationDict[param[0]] = value
37 print("value%s"%value)
38 print(correlationDict)

坑:为什么从DB(正确 ${cardid}=[data][cardid]')导出到EXCEL,再把EXCLE的数据导入到DB(错误 ["['${cardid}=[data][cardid]']"]

),数据的格式 就错了呢

这中间发生了什么呢?

头疼3-4次的问题,数据从DB导出到EXCEL,再从EXCEL导入到DB,数据格式发生错误 ,导致 程序出错。的更多相关文章

  1. ORACLE使用EXPDP和IMPDP数据泵进行导出导入的方法

    ORACLE使用EXPDP和IMPDP数据泵进行导出导入的方法 (2010-05-28 12:54:34) http://blog.sina.com.cn/s/blog_67d41beb0100ixn ...

  2. mysql数据库数据(字段数过大)太多导入不了的解决方法

    mysql数据库数据(字段数过大)太多导入不了的决方法: 1.打开navicat 工具 2.在数据库上右键,执行右键菜单命令“命令列界面” 3.在打开的窗口中,运行set global max_all ...

  3. 项目总结04:SQL批量导入数据:将具有多表关联的Excel数据,通过sql语句脚本的形式,导入到数据库

    将具有多表关联的Excel数据,通过sql语句脚本的形式,导入到数据库 写在前面:本文用的语言是java:数据库是MySql: 需求:在实际项目中,经常会被客户要求,做批量导入数据:一般的简单的单表数 ...

  4. java操作Excel之POI(4)利用POI实现数据的批量导出

    后台导出方法: /** * 后台导出方法 * 利用POI实现数据的批量导出 */ public String export() throws Exception{ Connection con = n ...

  5. 利用PHPExcel将数据导出到xls格式的excel文件

    在开发某地的经营许可证管理系统的时候需要将数据导出打excel文件,虽然一年前做某集团的ERP的时候用到过一次导入和导出,但是那时候太忙没时间写博客,一年过去了我也忘的差不多了,所以趁着今天将此次的使 ...

  6. phpexcel如何读取excel的数据和如何导出数据到excel

    phpexcel如何读取excel的数据和如何导出数据到excel 一.总结 一句话总结:去官网看参考手册和api,或者找中文的博客或者参考手册 1.phpexcel插件如何下载? 其实这些插件不仅可 ...

  7. 大数据学习——sqoop导出数据

    把数据从hadoop导出到关系型数据库 将数据从HDFS导出到RDBMS数据库 导出前,目标表必须存在于目标数据库中. u  默认操作是从将文件中的数据使用INSERT语句插入到表中 u  更新模式下 ...

  8. Batch Normalization的算法本质是在网络每一层的输入前增加一层BN层(也即归一化层),对数据进行归一化处理,然后再进入网络下一层,但是BN并不是简单的对数据进行求归一化,而是引入了两个参数λ和β去进行数据重构

    Batch Normalization Batch Normalization是深度学习领域在2015年非常热门的一个算法,许多网络应用该方法进行训练,并且取得了非常好的效果. 众所周知,深度学习是应 ...

  9. 用Delphi将数据导入到Excel并控制Excel

    一.调用Excel的方法:一般情况下有两种方法调用Excel:1.  直接使用Delphi自带的组件:在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWo ...

随机推荐

  1. 获取EasyUI日期输入框的值

    var date = $('#PurDate').datebox('getValue');

  2. Powershell read XML format config file

    upload.xml<?xml version="1.0" ?> <ftpConfig> <Protocol>ftp</Protocol& ...

  3. JVM(Java虚拟机)详解(JDK7)

    1.Java内存区域 运行时数据区域: Java 虚拟机在执行Java程序时,定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁.另外一些则是与线程 ...

  4. #python# 代理过程中遇到的error

    做一下总结 urllib.error.HTTPError: HTTP Error 503: Too many open connections TimeoutError: [WinError 1006 ...

  5. CodeChef Gcd Queries

    Gcd Queries   Problem code: GCDQ   Submit All Submissions   All submissions for this problem are ava ...

  6. JS的video在手机上有些手机能播放,而有些不能原因

    一,一开始我video是这样写的,直接给地址,然后有很多手机却不能播放,或者说卡在一开始的页面,是什么原因呢? <video id='video' > <source src='xx ...

  7. JVM(16)之 双亲委派模型

    开发十年,就只剩下这套架构体系了! >>>   在上一篇博文中,我们知道了如何获得二进制的字节流,并根据获得的字节流去装载一个类.同时也了解到类加载器的存在,每个加载器对应着不同的加 ...

  8. 使用EntityFramework调用存储过程并获取存储过程返回的结果集

    [实习]刚入职,公司要求完成两个任务,任务要求使用存储过程和事务,其中一个问题要获取存储过程的查询结果集.经过多方查找和自己的实践,终于找到了方法.这里记录一下. 看到的这篇文章中给出的例子是查询单个 ...

  9. myeclipse2014删除antlr-2.7.2.jar--解决struts和hibernate包冲突

    方式一: 要求眼疾手快,在workspace下的D:\myeclipse2014workspace\.metadata\.me_tcat7\webapps\工程名\WEB-INF\lib中将antlr ...

  10. MySQL Authentication plugin 'caching_sha2_password' cannot be loaded

    很多用户在使用Navicat Premium 12连接MySQL数据库时会出现Authentication plugin 'caching_sha2_password' cannot be loade ...