我有以下问题: 我在那里有一个项目和一个小图书馆,还有一个lib的测试目录,类似这样:
项目\
+ mylib \
++ test \
在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而失败,因为它可以找到测试数据文件。
这种行为的原因是什么,我该如何解决?
谢谢。
答案 0 :(得分:0)
如果在lib/test
中运行pytest,它将查找test_*.py
文件并在其中运行测试。如您所知,它不会导入test
程序包,因此永远不会导入__init__
。
如果您“全局”运行pytest,它将导入运行测试的软件包,以便导入__init__
。
要修复,可以使用pytest的conftest.py
。