Pytest - 模块未找到错误:没有名为 'x' 的模块。

5

已解决:将__init__.py添加到Test/中,并将testcode.py重命名为test_code.py。要运行测试,请键入cd -> Zee,然后输入pytest


结构:

|--Zee/
|   |--Test/
|   |   |--__init__.py
|   |   |--test_code.py
|   |--Codetotest/
|   |   |--code.py

在code.py中
class Foo():
    some code...

在testcode.py文件中

from Codetotest.code import Foo

def test_foo():
   assert ...

当我在命令行中进入Zee目录并运行pytest Test/testcode.py时,我遇到了“ModuleNotFoundError:No module named Zee”的错误。 我该如何解决?
我尝试通过添加Test/__init__.py文件使Test成为一个模块,如此处所建议的。但是无论从哪个目录运行都不行。
Pytest版本为5.3.4,导入自python 3.6。
我不理解的是,当我将__init__.py添加到Zee/目录中时,它会给我同样的错误。
1个回答

1

您需要在模块目录中放置一个 __init__.py 文件。

这是一个典型的项目结构:

|--zee-project-directory/
|   |--tests/
|   |   |--test_zee.py
|   |--zee/
|   |   |--__init__.py
|   |   |--code.py

code.py

class Foo():
    some code...

test_zee.py

from zee.code import Foo

def test_foo():
   assert ...

现在正在工作。我把__init__.py放在Test/中,将文件重命名为test_whatever,这就是我一开始应该做的 #rtfm - mpowcode
我认为在测试中甚至不需要__init__.py。由于pytest的行为方式,测试文件不必是模块(除非它们彼此之间导入内容)。 - Jérôme
无论如何,很高兴你解决了问题并欢迎来到 Stack Overflow。你可以点赞/接受这个答案。 - Jérôme
我非常确定你需要在 zee 中使用 __init__.py,而在 tests 中则不需要。 - Jérôme
我也不得不将它添加到tests中。仅仅在模块和子模块文件夹中是不够的。 - tim.rohrer
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接