pytest

时间:2018-10-10 19:50:05

标签: python python-import pytest

想象一个简单的文件夹结构:

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

我想念什么?

2 个答案:

答案 0 :(得分:1)

这是一种非常简单的方法:

  1. 清空DBMS_COMPARISON.COMPARE
  2. __init__.py以上的级别运行my_folderpython -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