想象一个简单的文件夹结构:
my_folder/
__init__.py
funcs.py
tests/
test_funcs.py
funcs.py:
def f():
return 2
__init__.py:
from funcs import f
test_funcs.py:
from funcs import f
def test_f():
assert f() == 2
这是文档中推荐的方法之一:https://pytest.readthedocs.io/en/reorganize-docs/new-docs/user/directory_structure.html
但是当我从my_folder
运行pytest时
tests/test_funcs.py:1: in <module>
from funcs import f
E ModuleNotFoundError: No module named 'funcs'
这很奇怪,因为我认为pytest
设置了它运行的路径,所以如果不手动处理它,这些类型的错误就不会出现。
文档也没有给出任何关于这方面的指示...他们只是在说:
通常您可以通过指向测试目录或模块来运行测试:
pytest test / test _appmodule.py#对于外部测试目录pytest src / test /test_appmodule.py#对于内联测试目录pytest src#在以下所有测试目录中运行测试pytest #运行当前目录下的所有测试
我遗漏了什么?
发布于 2018-10-12 07:08:25
下面是一个非常简单的方法:
my_folder
run python -m pytest
或python -m pytest tests
的级别(但不是pytest
)使用-m
选项运行模块的EXPLANATION:会将其包含在PYTHONPATH
中,因此与import语句相关的所有内容都将顺利解决。
发布于 2018-10-11 04:37:19
为了成功导入,必须从模块funcs
所在的目录运行测试文件test_funcs.py
。
作为一种解决办法,您可以修改sys.path
,它确定模块的插入器搜索路径。
test_funcs.py
import sys
sys.path.append('/Users/Yahya/Desktop/my_folder')
from funcs import f
def test_f():
assert f() == 2
https://stackoverflow.com/questions/52747763
复制相似问题