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

问题描述

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

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

解决方法

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

python 复制代码
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的文件中添加下面代码即可:

python 复制代码
import faulthandler
import sys
faulthandler.enable(file=sys.stdout)
相关推荐
数据小爬虫@2 小时前
深入解析:使用 Python 爬虫获取苏宁商品详情
开发语言·爬虫·python
健胃消食片片片片2 小时前
Python爬虫技术:高效数据收集与深度挖掘
开发语言·爬虫·python
gxhlh3 小时前
局域网中 Windows 与 Mac 互相远程连接的最佳方案
windows·macos
ℳ₯㎕ddzོꦿ࿐5 小时前
解决Python 在 Flask 开发模式下定时任务启动两次的问题
开发语言·python·flask
CodeClimb5 小时前
【华为OD-E卷 - 第k个排列 100分(python、java、c++、js、c)】
java·javascript·c++·python·华为od
一水鉴天5 小时前
为AI聊天工具添加一个知识系统 之63 详细设计 之4:AI操作系统 之2 智能合约
开发语言·人工智能·python
Channing Lewis5 小时前
什么是 Flask 的蓝图(Blueprint)
后端·python·flask
B站计算机毕业设计超人5 小时前
计算机毕业设计hadoop+spark股票基金推荐系统 股票基金预测系统 股票基金可视化系统 股票基金数据分析 股票基金大数据 股票基金爬虫
大数据·hadoop·python·spark·课程设计·数据可视化·推荐算法
觅远6 小时前
python+playwright自动化测试(四):元素操作(键盘鼠标事件)、文件上传
python·自动化
Mbblovey6 小时前
Picsart美易照片编辑器和视频编辑器
网络·windows·软件构建·需求分析·软件需求