如何在PyCharm中正确配置环境变量解决单元测试os.environ KeyError
Python单元测试os.environ[] KeyError问题(MacBook Pro M2 + PyCharm)
在MacBook Pro M2设备上使用PyCharm运行Python项目单元测试时,连日来频繁遇到os.environ[]触发KeyError的问题:
- 内置Terminal中可正常访问环境变量,直接启动Python测试
os.environ也正常 - 但运行或调试单元测试时,就会触发KeyError
已尝试以下操作:
- 进入
Run>Edit Configurations添加环境变量 - 进入
Settings>Build,Execution,Deployment>Console>Python Console添加环境变量 - 进入
Tools>Terminal配置环境变量
目前临时解决方法是为每个单独测试添加EnvFile配置!发现只有指定具体文件名/函数时,Run>Edit Configurations的配置才生效,针对整个测试文件夹创建的运行配置完全没有作用。
以下是我的config.xml文件内容:
<component name="ProjectRunConfigurationManager"> <configuration default="false" name="Unittests in tests/unit" type="tests" factoryName="Unittests"> <module name="smde_refactor" /> <option name="INTERPRETER_OPTIONS" value="" /> <option name="PARENT_ENVS" value="true" /> <option name="SDK_HOME" value="$PROJECT_DIR$/venv/bin/python" /> <option name="SDK_NAME" value="Python 3.10 (smde_refactor)" /> <option name="WORKING_DIRECTORY" value="" /> <option name="IS_MODULE_SDK" value="false" /> <option name="ADD_CONTENT_ROOTS" value="true" /> <option name="ADD_SOURCE_ROOTS" value="true" /> <EXTENSION ID="net.ashald.envfile"> <option name="IS_ENABLED" value="true" /> <option name="IS_SUBST" value="false" /> <option name="IS_PATH_MACRO_SUPPORTED" value="false" /> <option name="IS_IGNORE_MISSING_FILES" value="false" /> <option name="IS_ENABLE_EXPERIMENTAL_INTEGRATIONS" value="false" /> <ENTRIES> <ENTRY IS_ENABLED="true" PARSER="runconfig" IS_EXECUTABLE="false" /> <ENTRY IS_ENABLED="true" PARSER="env" IS_EXECUTABLE="false" PATH="tests/unit/environment.env" /> </ENTRIES> </EXTENSION> <option name="_new_pattern" value="""" /> <option name="_new_additionalArguments" value="""" /> <option name="_new_target" value=""$PROJECT_DIR$/tests/unit"" /> <option name="_new_targetType" value=""PATH"" /> <method v="2" /> </configuration> </component>
我知道这是文件夹而非脚本,但即使选择了具体脚本,其中的测试函数仍无法获取环境变量。将.py脚本整体运行时(已在运行配置中添加环境变量)能成功获取os.environ,但单独运行脚本内的测试时均失败,无法获取环境变量。恳请帮助!
内容的提问来源于stack exchange,提问作者doublea
相关产品推荐
相关产品推荐

