You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pyfakefs导致requests测试报错,additional_skip_names配置无效求助

解决pyfakefs与requests的证书文件冲突问题

问题根源是pyfakefs接管了文件系统操作,导致requests依赖的certifi证书文件路径被虚拟文件系统拦截,无法访问真实的证书文件。你之前尝试用additional_skip_names但配置对象错误,应该针对certifi模块或其证书文件路径来配置,而不是requests模块。

以下是两种可行的解决方法:

方法1:跳过certifi模块的文件系统拦截

使用additional_skip_modules参数,让pyfakefs不对certifi模块的文件操作做虚拟处理,这样requests就能正常访问真实的证书文件:

import pytest
import certifi

@pytest.mark.parametrize("fs", [{"additional_skip_modules": [certifi]}], indirect=True)
def test_my_unit_test_using_requests(fs):
    test_using_requests()

方法2:跳过证书文件路径的虚拟

直接指定certifi证书文件的真实路径,让pyfakefs不对该路径做拦截:

import pytest
import certifi

@pytest.mark.parametrize("fs", [{"additional_skip_names": [certifi.where()]}], indirect=True)
def test_my_unit_test_using_requests(fs):
    test_using_requests()

全局配置(可选)

如果多个测试都需要这个配置,可以在conftest.py中自定义fs fixture,全局生效:

import pytest
import certifi
from pyfakefs.fake_filesystem_unittest import Patcher

@pytest.fixture
def fs():
    patcher = Patcher(additional_skip_modules=[certifi])
    patcher.setUp()
    yield patcher.fs
    patcher.tearDown()

这样所有使用fs fixture的测试都会自动跳过certifi的文件系统拦截,无需每个测试单独配置。

内容的提问来源于stack exchange,提问作者Nicolas Berthier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 15:12:09