gpt4 book ai didi

python-3.x - 当我将测试放在单独的目录中时,pytest 找不到包

转载 作者:行者123 更新时间:2023-12-04 01:46:22 26 4
gpt4 key购买 nike

我有一个非常基本的 Python 包示例和一个我正在尝试使用 pytest 运行的测试

package
\--
__init__.py
spam.py
spam_test.py
__init__.py为空, spam.py定义一个函数 func()spam_test.py是:
import package.spam

def test_func():
assert(package.spam.func() == 5)

在根目录中我运行 py.test一切正常,返回一项通过测试。

我认为我也可以以这种方式构造事物:
package
\--
__init__.py
spam.py
tests
\--
spam_test.py

但是现在当我运行 py.test在根我得到:

============================= 测试开始================== ===========
平台 win32 -- Python 3.6.0、pytest-3.0.5、py-1.4.32、pluggy-0.4.0
根目录:C:\Users\MattUser\Documents\m_drive\notebooks\testing,inifile:
收集到 0 个项目/1 个错误

==================================== 错误============== =======================
_____________________ 错误收集测试/spam_test.py _____________________
导入测试模块时出现 ImportError 'C:\Users\MattUser\Documents\m_drive\not
电子书\测试\测试\spam_test.py'。
提示:确保您的测试模块/包具有有效的 Python 名称。
追溯:
测试\spam_test.py:1:在
导入包.spam
E ModuleNotFoundError: 没有名为“包”的模块
!!!!!!!!!!!!!!!!!!中断:收集期间出现 1 个错误!!!!!!!!!!!!!!!!!!!
============================ 0.19 秒内出现 1 个错误 ================= =========

我尝试了各种事情,但没有运气。我究竟做错了什么??

最佳答案

好吧,我让它工作了。添加一个空的__init__.py tests 中的文件目录。

为什么这行得通?来自 official docs :

determine basedir: this is the first “upward” (towards the root) directory not containing an __init__.py.



所以对于 tests不包含 __init__.py , pytest 确定为 basedir .添加 __init__.py强制pytest递归到根,从那里它可以导入它需要的东西......

关于python-3.x - 当我将测试放在单独的目录中时,pytest 找不到包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42724305/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com