我试图运行一系列的测试,为一个python项目在PyCharm,并已运行到os. environ [] KeyErrors近不间断的过去几天.设备是MacBook Pro M2.
我可以从内置的"终端"访问env变量,但是要启动python并使用os.environ进行测试,但是当我实际运行测试或调试时就不行了,这就是KeyErrors出现的时候。
以下是我目前所做的工作:
1.我转到"运行"〉"编辑配置",并在其中添加了我的环境变量
1.我转到设置〉构建、执行、部署〉控制台〉Python控制台,并将它们添加到那里
1.转到工具〉终端并执行相同操作。
目前的解决方案是为每个单独的测试添加一个EnvFile配置!看起来Run〉Edit Configurations绝对没有任何作用,除非我指定确切的file_name/python_function。为整个测试文件夹创建一个运行配置看起来没有任何作用。
下面是我的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>
^我知道这是一个文件夹而不是一个脚本--但是即使选择了一个特定的脚本,仍然无法使用该脚本中的任何函数来获取env变量。
如果我把一个. py脚本作为一个整体运行(在把env变量添加到运行配置之后),它会成功(os.environ被选中!),但是如果我单独运行这个. py脚本中的任何一个测试,它们都会失败(不能选中os.environ)。
谢谢大家!
2条答案
按热度按时间fafcakar1#
好吧...
tmt是正确的--我真正需要做的就是在Run〉Edit Configurations中乱转几分钟。
关键是然后进入"编辑配置模板"。为了确保万无一失,我向Python、Python测试/Pytest和Python测试/UnitTests的模板添加了所需的env变量。
^这没有立即起作用。我必须删除我第一次打开运行〉编辑配置时出现的所有现有配置。
然后,瞧--文件夹中的所有pytests脚本+模块开始获取所需的env变量。
行,而不是直接在. xml中指定键/值(无论如何,这并不奏效)
rekjcdws2#
下面是在 tests/ 文件夹上调用Pytest的示例配置:
如您所见,有一个
<envs>
部分,其中ABC
变量被设置为XXX
。还要注意factoryName
是py.test
,而不是您的Unittests
,这是一个不同类型的运行配置。当您点击编辑器中测试函数旁边的绿色箭头时,要为每个自动创建的运行配置自动设置env变量,您需要做两件事:
1.确保 * 首选项-〉工具-〉Python集成工具-〉测试-〉默认测试运行器 * 设置为 pytest。
1.在 * 编辑配置... -〉编辑配置模板... -〉Python测试-〉pytest -〉环境变量 * 中设置所有你想要的env变量。
**然而,我意识到你使用的是EnvFile插件,这可能会使我上面写的演示内置PyCharm功能的内容完全无效。**如果你想测试我的示例,我建议你暂时禁用该插件。