pipenv执行pytest时忽略源码修改,始终使用缓存内容?
解决Django+pytest代码修改不生效的缓存问题
针对你遇到的代码修改后pytest仍加载旧代码的问题,试试以下方案:
强制使用importlib导入模式
运行测试时添加--import-mode=importlib参数,强制pytest使用Python的importlib机制重新导入模块,避免旧模块缓存:pipenv run pytest src/some/path/models.py --import-mode=importlib彻底禁用pytest缓存
使用--no-cacheprovider参数完全关闭pytest的缓存功能,比--cache-clear更彻底:pipenv run pytest src/some/path/models.py --no-cacheprovider清理项目目录下的__pycache__
除了虚拟环境中的.pyc文件,还要删除项目src目录下所有__pycache__文件夹:find src -name "__pycache__" -type d -exec rm -rf {} +验证虚拟环境的正确性
确认当前测试使用的是项目对应的虚拟环境,避免全局Python或其他环境干扰:pipenv run which python输出路径应该指向当前项目的pipenv虚拟环境目录,若不符,重新创建虚拟环境:
pipenv --rm && pipenv install --dev检查Django应用配置
确保settings.py的INSTALLED_APPS中应用的路径配置正确。如果你的应用在src/some/path,则应该添加'some.path'而非'src.some.path',错误的路径会导致Django加载错误的模块版本。刷新文件系统缓存
Ubuntu的文件系统可能存在缓存,执行以下命令强制刷新:sync && sudo sysctl -w vm.drop_caches=3
内容的提问来源于stack exchange,提问作者rkardashov
相关产品推荐
相关产品推荐

