Pytest结合psutil与xlwings运行异常问题求助
xlwings + pytest + psutil 共存导致Windows致命异常(0x800706ba)
我在Stack Overflow上找到类似问题但无人解答,以下是更简洁的问题复现步骤:
创建名为test_file.py的文件,内容如下:
import psutil import xlwings def test() -> None: my_function() def my_function() -> None: # 创建新工作簿 wb = xlwings.Book() # 保存 wb.save('test.xlsx') # 关闭 wb.close() # 清理僵尸进程 for proc in psutil.process_iter(): if proc.name() == "EXCEL.EXE": proc.kill() if __name__ == "__main__": my_function()
直接执行python test_file.py一切正常,但使用pytest运行单元测试时,出现错误:
test_file.py Windows fatal exception: code 0x800706ba
完整回溯信息:
File "C:\Users\....\Desktop\so\test_file.py", line 6 in test File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\_pytest\python.py", line 195 in pytest_pyfunc_call File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\pluggy\_callers.py", line 39 in _multicall File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\pluggy\_manager.py", line 80 in _hookexec File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\pluggy\_hooks.py", line 265 in __call__ File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\_pytest\python.py", line 1789 in runtest File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\_pytest\runner.py", line 167 in pytest_runtest_call File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\pluggy\_callers.py", line 39 in _multicall File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\pluggy\_manager.py", line 80 in _hookexec File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\pluggy\_hooks.py", line 265 in __call__ File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\_pytest\runner.py", line 260 in <lambda> File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\_pytest\runner.py", line 339 in from_call File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\_pytest\runner.py", line 259 in call_runtest_hook File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\_pytest\runner.py", line 220 in call_and_report File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\_pytest\runner.py", line 131 in runtestprotocol File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\_pytest\runner.py", line 112 in pytest_runtest_protocol File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\pluggy\_callers.py", line 39 in _multicall File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\pluggy\_manager.py", line 80 in _hookexec File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\pluggy\_hooks.py", line 265 in __call__ File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\_pytest\main.py", line 349 in pytest_runtestloop File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\pluggy\_callers.py", line 39 in _multicall File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\pluggy\_manager.py", line 80 in _hookexec File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\pluggy\_hooks.py", line 265 in __call__ File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\_pytest\main.py", line 324 in _main File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\_pytest\main.py", line 270 in wrap_session File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\_pytest\main.py", line 317 in pytest_cmdline_main File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\pluggy\_callers.py", line 39 in _multicall File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\pluggy\_manager.py", line 80 in _hookexec File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\pluggy\_hooks.py", line 265 in __call__ File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\_pytest\config\__init__.py", line 167 in main File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\_pytest\config\__init__.py", line 190 in console_main File "C:\Users\....\AppData\Local\Programs\Python\Python311\Scripts\pytest.exe\__main__.py", line 7 in <module> File "<frozen runpy>", line 88 in _run_code File "<frozen runpy>", line 198 in _run_module_as_main
环境版本:
- Python 3.11.1
- xlwings==0.28.6
- pytest==7.2.2
- psutil==5.9.4
该问题仅在三者共存时出现,单独任意两者组合均无法复现。
尝试过使用xlwings上下文管理器写法,代码如下:
import xlwings def test() -> None: my_function() def my_function() -> None: with xlwings.App(visible=True): # 创建新工作簿 wb = xlwings.Book() # 保存 wb.save('test.xlsx') # 关闭 wb.close() if __name__ == "__main__": my_function()
直接执行脚本正常,但用pytest运行时仍报完全相同的错误。
内容的提问来源于stack exchange,提问作者IHopeItWontBeAStupidQuestion
相关产品推荐
相关产品推荐

