我具有以下目录结构:
src
\conftest.py
\dir_A
\run_A.py
\test_run_A.py
\dir_B
\run_B.py
其中run_A.py具有以下代码:
from dir_B import run_B
...
当我从pytest
运行src
时,出现错误:
ImportError while importing test module '/home/user/src/dir_A/run_A.py'
...
ImportError: cannot import name 'run_B'
尽管使用conftest.py,是否有失败的原因?
我想补充一点,从python3 -m dir_A.test_run_A
运行src
可以很好地进行测试。
这可能有点太长,无法发表评论,所以即使它尚不完全是ImportError
的原因,也让我将其作为答案。
因为run_A
和run_B
是模块,所以您应该在__init__
和dir_A
内部创建一个空的dir_B
,以使解释器可以识别它们。
[其次,您似乎想在run_A
,run_B
内部测试函数/类,因此例如在test_run_A.py
您应该执行from run_A import foo, bar
,其中foo
,bar
是要测试的功能/类。
第三,如前所述,您的$PYTHONPATH
是什么? (即echo $PYTHONPATH
的输出)。您是否尝试过将src
目录添加到PYTHONPATH
?即从src
内部
export PYTHONPATH=$(pwd):$PYTHONPATH
最后,您是说使用
python3 -m dir_A.test_run_A
作品。是否
python -m dir_A.test_run_A
也可以吗?如果不是,which python
和which python3
的输出是什么?