gpt4 book ai didi

python - pytest 集成 - 如何正确导入

转载 作者:太空宇宙 更新时间:2023-11-04 00:44:33 24 4
gpt4 key购买 nike

我正在使用 py.test 来测试我的 python 代码。我项目的相关结构是

-myproject
file.py
file2.py
-test/
input.txt
input2.dat
test_part.py
-regress/
file2_old.py
__init__.py
-test/
test_file2_regression.py

test_part.py 导入 filefile2test_file2_regression.py 导入 file2regress.file2_old。如果我在控制台中运行 pytest,我会收到导入错误,即包不存在。另一方面,运行 python -m pytest 工作得很好,但前提是我从 myproject/ 目录运行它。

执行此操作的正确方法是什么,以使其在我的项目中的任何位置工作?我已经尝试修改 PYTHONPATH 但老实说我不知道​​如何正确地修改它。


更多信息:

我没有任何设置文件,我的 __init__ 只是空文件。如果需要操作 PYTHONPATH,则需要相对于 myproject 完成,因为我在多台机器上使用它。我正在运行 python 2.7。


我已经 checkout :

但这并没有真正帮助我。

最佳答案

在项目的任何目录中使用 pytest 命令的解决方案是在导入之前包含在 test*.py 文件中:

import os
from sys import path
PATH = os.path.abspath(os.path.dirname(__file__))
path.append(os.path.join(PATH, os.pardir, os.pardir))

其中适当数量的 os.pardir 用于导航到项目目录,__init__.py 文件允许从那里导入模块。

argv[0]inspect.getsourcefile 都没有提供必要的信息。 argv[0] 包含使用的 py.test 模块的位置,getsourcefile 方法仅返回 None


编辑:从 Python 3.4 开始,我们可以使用现代 pathlib 代替 os.path:

from pathlib import Path
from sys import path

PATH = Path(__file__).resolve()
path.append(PATH.parents[2])

关于python - pytest 集成 - 如何正确导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40318805/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com