访问父文件夹中的模块
Accessing module in parent folder
我试图实现我在 tutorial on Real Python 中看到的东西。在教程中有一个测试模块(或者你称之为测试文件?)在目录 test/
中,代码在目录 rptodo/
中,测试文件导入要测试的对象from rptodo import __app_name__, __version__, cli
。这本身并不 运行;发生错误 ModuleNotFoundError: No module named 'rptodo'
。但这确实允许 pytest 运行 代码。然后我尝试用我自己的示例代码重做这个,即使在 pytest 中我也得到同样的错误。我在创建模块时做错了什么?
我的文件夹结构:
Anywhere
-here
--test_this.py
-there
--__init__.py
--yonder.py
yonder.py
class That:
thing = 'something'
test_this.py
from there.yonder import That
def test_this():
this = That()
print(this.thing)
test_this()
我在 Whosebug 的一个 similar questions 中找到了答案,但是 un-intuitive 我觉得有必要 post 在这里找到答案。
必须通过创建文件__init__.py
将包含测试的文件夹打包。 Pytest 然后知道查看所需对象所在的模块包的父文件夹。
具有讽刺意味的是,被引用的文件夹不需要找到 __init__.py
文件作为导入模块。只有进行调用的当前文件夹需要是具有 __init__.py
.
的模块
不仅从不同文件夹导入模块时,即使从 current 文件夹访问模块时,pytest 也需要该文件夹有一个 __init__.py
文件能够导入带有测试代码的文件。
我试图实现我在 tutorial on Real Python 中看到的东西。在教程中有一个测试模块(或者你称之为测试文件?)在目录 test/
中,代码在目录 rptodo/
中,测试文件导入要测试的对象from rptodo import __app_name__, __version__, cli
。这本身并不 运行;发生错误 ModuleNotFoundError: No module named 'rptodo'
。但这确实允许 pytest 运行 代码。然后我尝试用我自己的示例代码重做这个,即使在 pytest 中我也得到同样的错误。我在创建模块时做错了什么?
我的文件夹结构:
Anywhere
-here
--test_this.py
-there
--__init__.py
--yonder.py
yonder.py
class That:
thing = 'something'
test_this.py
from there.yonder import That
def test_this():
this = That()
print(this.thing)
test_this()
我在 Whosebug 的一个 similar questions 中找到了答案,但是 un-intuitive 我觉得有必要 post 在这里找到答案。
必须通过创建文件__init__.py
将包含测试的文件夹打包。 Pytest 然后知道查看所需对象所在的模块包的父文件夹。
具有讽刺意味的是,被引用的文件夹不需要找到 __init__.py
文件作为导入模块。只有进行调用的当前文件夹需要是具有 __init__.py
.
不仅从不同文件夹导入模块时,即使从 current 文件夹访问模块时,pytest 也需要该文件夹有一个 __init__.py
文件能够导入带有测试代码的文件。