想象一个简单的文件夹结构:
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 tests/test_appmodule.py # for external test dirs pytest src/tests/test_appmodule.py # for inlined test dirs pytest src # run tests in all below test directories pytest # run all tests below current dir
我想念什么?
答案 0 :(得分:1)
这是一种非常简单的方法:
DBMS_COMPARISON.COMPARE
__init__.py
以上的级别运行my_folder
或python -m pytest
(但不python -m pytest tests
) EXPLANATION::运行带有pytest
选项的模块会将其包含在-m
中,因此与导入语句有关的所有问题都将得到顺利解决。
答案 1 :(得分:-1)
必须从模块test_funcs.py
所在的目录运行测试文件funcs
,以便成功导入。
作为一种解决方法,您可以修改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