感谢您的综合帮助。
事实证明,这是几件事的混合。
1.) 通过写入日志文件,我可以确认您需要将 conftest.py 放入 src 目录,以便将其附加到路径中。
2.) /project/tests/ 子目录中不应有__init__.py
与/project/src 下的子目录同名的文件。这是因为 /tests/ 子目录在 sys.path 列表中位于 /src/ 子目录之前。因此,pytest 将首先识别 /tests 下的目录 - 如果它们有__init__.py
文件,则假设它们是您正在寻找的模块/包。也许将这些目录重命名为“tests/test_module”而不是“tests/module”可能会有所帮助。请注意,这尤其适用于您拥有 test_xy.py 文件的目录。
3.) 最后,你不应该使用python3 -m pytest tests
but python3 -m pytest
,以当前目录为起点,让 pytest 有机会在 src 目录中找到 conftest.py 。
__init__.py
如果 - 出于某种原因 - 您需要其中的文件,那么在测试中的包(如在源代码下)不具有相同的名称甚至是有意义的。例如,您可以称它们为 test_package。
老实说,我确实想知道为什么从未对此进行过调查。正如你所指出的,已经有很多关于这个的讨论。每个人都贡献了一点。但没有一个是全面的。那么人们在实践中是如何工作的呢?我的意思是,毕竟我们谈论的是测试必需品。
平心而论,我还从 pytest 的文档中了解到,您应该使用 setup.py 文件正确构建您的包。
哇,多么美妙的旅程。我希望其他人可以受益。我感谢大家帮助我。