Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pytest不';t执行test/\uuuu init\uuuu.py文件_Python_Pytest_Python Packaging - Fatal编程技术网

Python pytest不';t执行test/\uuuu init\uuuu.py文件

Python pytest不';t执行test/\uuuu init\uuuu.py文件,python,pytest,python-packaging,Python,Pytest,Python Packaging,我有以下问题: 我有一个项目和一个小库,还有一个lib的测试目录,类似于: 计划\ +迈里布\ ++测试\ 在test\uuu init\uuuu.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, "t

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

计划\

+迈里布\

++测试\

在test\uuu init\uuuu.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失败,因为它可以找到测试数据文件

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


谢谢。

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


要修复此问题,可以使用pytest。

我已经在lib/test包中创建了conftest.py文件:import os import sys def update_syspath_for_test_file_search():SCRIPT_DIR=os.path.dirname(os.path.realpath(os.path.join(os.getcwd(),os.path.expanduser(file)))sys.path.append(os.path.path.normpath(os.path.join(SCRIPT_DIR,“test_data_files”))但它仍然找不到文件。我做错了什么吗?我知道可以使用fixture吗?您是否仔细检查了
SCRIPT_DIR
是否设置为您期望的值?我还将确保
conftest.py
在您希望它运行的时候运行。