pytest 的 ModuleNotFoundError 问题

Joh*_*hiu 7 python unit-testing module pytest

我想使用 pytest 对另一个名为src. 这是我的目录结构:

src      
  __init__.py
  script1.py
  script2.py
test
  test_fun.py
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试通过命令行在文件夹中运行pytesttest,看到以下错误

from script2 import fun2
E ModuleNotFoundError: No module named 'script2'

在每个脚本中,我有以下内容

脚本2.py

def fun2():
return('result_from_2')
Run Code Online (Sandbox Code Playgroud)

脚本1.py

from script2 import fun2

def fun1():
    return(fun2()+'_plus_something')
Run Code Online (Sandbox Code Playgroud)

test_fun.py :

import sys
sys.path.append('../')
from src.script1 import fun1

def test_fun1():        
    output1 = fun1()

    # check output
    assert output1=='result_from_2_plus_something'
Run Code Online (Sandbox Code Playgroud)

如何使用上面提供的目录运行 pytest?

Ven*_*agi 4

导入文件时,Python 仅搜索当前目录、运行入口点脚本的目录和sys.path.

修改test_fun.py如下:

import sys
sys.path.insert(0, '../src/')
from script1 import fun1

def test_fun1():        
    output1 = fun1()

    # check output
    assert output1=='result_from_2_plus_something'
Run Code Online (Sandbox Code Playgroud)