Pytest导入错误,尽管在根目录中使用conftest?

问题描述 投票:0回答:1

我具有以下目录结构:

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可以很好地进行测试。

python unit-testing pytest
1个回答
0
投票

这可能有点太长,无法发表评论,所以即使它尚不完全是ImportError的原因,也让我将其作为答案。

因为run_Arun_B是模块,所以您应该在__init__dir_A内部创建一个空的dir_B,以使解释器可以识别它们。

[其次,您似乎想在run_Arun_B内部测试函数/类,因此例如在test_run_A.py您应该执行from run_A import foo, bar,其中foobar是要测试的功能/类。

第三,如前所述,您的$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 pythonwhich python3的输出是什么?

© www.soinside.com 2019 - 2024. All rights reserved.