• 【Python+Django+Pytest】数据库异常pymysql.err.InterfaceError: (0, '') 解决方案


    问题背景:

    接口自动化测试平台,在执行测试案例之外,还需要做以下五件事情(或步骤):

    1.查询用户在数据准备中预置的测试套件层数据初始化相关sql  (setUp_class方法中)

    2.查询用户在数据准备中预置的测试案例层数据初始化相关sql    (setUp_method方法中)

    3.查询用户在数据准备中预置的测试套件层数据清理相关sql       (tearDown_class方法中)

    4.查询用户在数据准备中预置的测试案例层数据清理相关sql       (tearDown_method方法中)

    5.全部案例执行结束之后将结果写入t_execution及t_result表      (tearDown_class方法中)

    代码修改:

    原来的代码是在每个方法中执行查询操作,然后在tearDown_class方法中执行 5.全部案例执行结束之后将结果写入t_execution及t_result表

    考虑到性能问题

    优化后的代码为:

    将1-4中的步骤提前,全部查询出来数据之后,再分别执行setUp_class、setUp_method、tearDown_class、tearDown_method方法

    事情5仍然放在tearDown_class中

    问题出现:

    修改完代码之后,在开发环境验证了一个案例相对比较少,全部执行时间只有10+s的模块,没有出现问题,准备按时上线

    结果上线之后,跑了一个案例比较多,全部执行时间有4m多的模块,结果报:pymysql.err.InterfaceError: (0, '')

    问题解决:

    修改第5步中 执行更新 t_execution及t_result不关闭连接,最后在finally中关闭连接  -->未起作用

    将修改之前的代码重新上传至服务器,验证没有问题  -->自己修改的代码有问题

    突然意识到将所有查询数据准备sql的代码提前之后,再到将最后的结果更新 到t_execution及t_result之前,数据库的连接有很长一段时间的空闲时间,于是尝试在更新结果之前重新建立连接,修改完代码,并部署到服务器之后 -->验证没有问题

    以上为我自己的解决方法,不知道说清楚没有,希望看到文章的你提出宝贵意见

    附:别处看到的更专业也更有可能有用的解决方法跟思路

    (21条消息) 【Python】数据库异常pymysql.err.InterfaceError: (0, '')解决方案_2021 真实-CSDN博客_pymysql.err.interfaceerror

  • 相关阅读:
    typora永久插入图片
    Cortex-M 处理器 hardfault 定位方法和步骤(基于Keil mdk)
    STM32之CAN ---CAN ID过滤器分析
    记一次payload绕过电脑管家免杀
    kali linux 静态地址和动态地址的设置
    mona
    武装你的浏览器--自用的火狐插件推荐
    kali linux开启ssh
    记一次腾讯云服务器centos linux可视化桌面安装并进行远程桌面登录及其安装中文包
    widows终端远程连接Linux服务器
  • 原文地址:https://www.cnblogs.com/QianyuQian/p/15718309.html
Copyright © 2020-2023  润新知