在使用 PyCharm 开发 Python 测试用例时,可能会遇到一个常见的问题:通过界面点击运行按钮执行 test_xxx.py
文件中的测试用例时,出现 “fixture 'XXX' not found” 的错误提示。这个问题可能会让人困惑,尤其是当我们确认已经在项目中定义了相应的 fixture。
问题原因
经过一番研究,我发现 PyCharm 在界面运行测试用例时,默认会在当前测试文件所在的目录及其子目录中查找 conftest.py
文件,并从中加载 fixtures。如果 conftest.py
位于项目的更高层级目录,PyCharm 就不会自动地找到它。
项目结构
为了更好地说明问题,来看一下项目的目录结构:
my_project/
├── conftest.py
└── case/
├── __init__.py
└── test_case.py
在这种情况下,我们的 conftest.py
文件位于 项目 目录下,而 test_case.py
位于 my_project/case/
目录下。
解决方法
解决这个问题非常简单,只需要修改 PyCharm 的运行配置,将“工作目录”设置为项目的根目录路径。通过这样做,PyCharm 会正确地加载 conftest.py
文件,从而找到所需的 fixture。
以上修改后,再次运行测试,现在应该不会看到 "fixture 'XXX' not found" 的错误了。
注:因为工作时间关系还没深入研究原因,如果有更深入了解此问题原因的朋友,欢迎在留言区分享你的见解。