我在用pytest。NB W10。
我将运行我的应用程序
> python src/core
。“核心”是我的中央模块,带有
__main__.py
文件
出于这个原因,我将我的“测试”目录放在[project-root]/src/core中。
我有一个测试文件test_xxx.py。我试图在其中导入
__main__
:
import __main__
...
def test_xxxxx():
print(f'main {__main__} type {type(__main__)}')
这将打印以下内容:
main <module '__main__' from 'D:\\apps\\Python\\virtual_envs\\doc_indexer v2.0.0\\Scripts\\pytest.exe\\__main__.py'> type <class 'module'>
…换句话说,这是进口而不是我的本地
__main__.py
来自我的本地“核心”模块,但pytest自己的
主要的
从其模块。到目前为止,这是可以理解的。然后我查看sys.path:
path: D:\My Documents\software projects\EclipseWorkspace\doc_indexer\src\core\tests
path: D:\My Documents\software projects\EclipseWorkspace\doc_indexer\src\core
path: D:\apps\Python\virtual_envs\doc_indexer v2.0.0\Scripts\pytest.exe
path: D:\apps\Python\PyQt5
...
现在我在挠头,这已经不是第一次用pytest了。这src\core路径已列出
之前
…脚本\pytest.exe。为什么pytest会自己识别
__main__.py
并导入,然后再导入
__main__.py
从它之前的路径?
我还尝试了各种实验
importlib
。似乎什么都不起作用。
一般来说,有没有办法真正导入该文件。。。src/core/
__main__py
?
我意识到这个文件在交给另一个文件之前应该做最少的事情,但为了完整性,我只想测试一下
main()
事实上确实做到了。有办法跑吗
__main__.main()
在测试中?