【问题标题】:pytest doesn't execute test/__init__.py filepytest 不执行 test/__init__.py 文件
【发布时间】:2019-09-27 09:03:08
【问题描述】:

我有以下问题: 我有一个项目和一个小库,还有一个 lib 的测试目录,类似这样:

项目\

+mylib\

++测试\

在 test__init__.py 我有以下代码:

SCRIPT_DIR = os.path.dirname(os.path.realpath(os.path.join(os.getcwd(), os.path.expanduser(__file__))))
sys.path.append(os.path.normpath(os.path.join(SCRIPT_DIR, "test_data_files")))

所以只需更新 syspath 即可打开一些包含测试数据的文件。 当我通过右键单击 Pycharm 中的目录运行测试时,它成功执行,但是当我运行时

python -m pytest lib/test

它不执行 test/init.py 文件并因 FileNotFoundError 而失败,因为它可以找到测试数据文件。

这种行为的原因是什么,我该如何解决?

谢谢。

【问题讨论】:

    标签: python pytest python-packaging


    【解决方案1】:

    如果您在 lib/test 中运行 pytest,它将查找 test_*.py 文件并在其中运行测试。正如您所发现的,它不会导入 test 包,因此永远不会导入 __init__。 如果您“全局”运行 pytest,它会导入运行测试的包,以便导入您的 __init__

    要修复,您可以使用 pytest 的 conftest.py

    【讨论】:

    • 我在 lib/test 包中创建了 conftest.py 文件: import os import sys def update_syspath_for_test_file_searching(): SCRIPT_DIR = os.path.dirname(os.path.realpath(os.path.join (os.getcwd(), os.path.expanduser(file)))) sys.path.append(os.path.normpath(os.path.join(SCRIPT_DIR, "test_data_files")) ) 但它仍然找不到文件。我是不是做错了什么?
    • 我可以使用固定装置吗?
    • 您是否仔细检查了SCRIPT_DIR 是否设置为您所期望的?我还要确保 conftest.py 在您希望它运行的时候运行。
    猜你喜欢
    • 1970-01-01
    • 2013-09-03
    • 1970-01-01
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多