当前位置: 首页 > news >正文

Pytest使用Jpype调用jar包报错:Windows fatal exception: access violation

问题描述

​   之前我们有讲过如何使用Jpype调用jar包,在成功调用jar包后,接着在Pytest框架下编写自动测试用例。但是在Pytest下使用Jpype加载jar包,并调用其中的方法会以下提示信息:

在这里插入图片描述

​   虽然提示信息显示有Windows显示致命错误,但是并不会影响最后的测试用例是否会通过。但是每次运行Pytest测试函数时,都会有这样的信息看着很难受。

解决方法

​   我们直接来看解决方法,只要在Jpype启动jvm的地方加上以下代码即可:

import faulthandler
faulthandler.enable()
faulthandler.disable()

​   这样Pytest就会过滤掉上述的报错信息。

问题分析

​   我在github上找到这个问题的帖子是2020年的(“Windows fatal exception: access violation” on Windows using pytest · Issue #561 · jpype-project/jpype)。

​   根据帖子里面的描述,这个问题是harmless(无害的),因此虽然有Windows fatal exception的提示信息,测试方法也能正常通过。帖子也有推测这个问题出现的原因,进程死亡、线程死亡和资源被强制移除等,但是似乎并没有结论,只给出了绕过这个提示信息的方法。

​   另外,我在后续的测试中,对jar包中的代码进行进一步封装后,重新调整了一下Pytest的代码,上面的Windows fatal exception又不会显示了。帖子里面也给出了复现这个问题的方法,只需要在使用Jpype的文件中添加下面代码即可:

import faulthandler
import sys
faulthandler.enable(file=sys.stdout)

http://www.mrgr.cn/news/78390.html

相关文章:

  • go语言的成神之路-筑基篇-第一章
  • 华为鸿蒙内核成为HarmonyOS NEXT流畅安全新基座
  • 分页/列表分页
  • 安装MySQL服务
  • ddddocr:强大的开源OCR库(2.0版本)
  • 数据结构 【二叉树(上)】
  • 【k8s深入理解之 Scheme】全面理解 Scheme 的注册机制、内外部版本、自动转换函数、默认填充函数、Options等机制
  • 力扣hot100-->排序
  • Diving into the STM32 HAL-----I²C笔记
  • 【StarRocks】starrocks 3.2.12 【share-nothing】 多Be集群容器化部署
  • K8s调度器扩展(scheduler)
  • 【NLP 2、机器学习简介】
  • 《Unity Shader 入门精要》高级纹理
  • 44.扫雷第二部分、放置随机的雷,扫雷,炸死或成功 C语言
  • Ubuntu操作
  • tongweb安全整改(by cz)
  • QT6学习第五天 第一个QT Quick程序
  • 爬虫笔记24——纷玩岛(某岛)自动抢票脚本笔记
  • 006 单片机嵌入式中的C语言与代码风格规范——常识
  • 线索二叉树
  • 【前端】JavaScript 变量声明和函数声明的提升机制:深入探讨提升优先级与其行为
  • 【VUE3】新版Vue3+ElementPlus全家桶开发视频项目实战
  • Java代码操作Zookeeper(使用 Apache Curator 库)
  • LSA详情与特殊区域
  • Zabbix 7.0 LTS Docker Compose 部署指南与遇到问题解决
  • 学习线性表_3