使用Pytest打包Python

iyfjxgzm  于 2023-05-05  发布在  Python
关注(0)|答案(1)|浏览(221)

我有一棵这样的树

src
  __init__.py  
  my_app
    __init__.py
    db.py
    config.py
tests
  __init__.py
  test_db.py

db.py中,我有一个这样的导入

from config import my_func

当我单独运行db.py(python /src/my_app/db.py)时,这很好用。
当我尝试用pytest运行它时,它说,在www.example.com文件中没有名为config的模块db.py。

import sys, os
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
from config import my_func

然后我从pytest得到一个错误,它说

from src.my_app.db import foo
"No module found named src"

虽然我相信这将得到否决遗忘,我只是不明白有什么问题。我看了几十个帖子,觉得我有这个权利,但显然不是

6ojccjat

6ojccjat1#

我建议避免使用任何sys.path.insert/sys.path.append黑客。
相反,请确保您的PYTHONPATH设置正确,它应该包括您的src目录所在的路径。否则,src.my_app.db导入将不会被解析。
假设,您有以下src目录的路径:/Users/michael/py_project/src
您的tests目录位于以下路径:/Users/michael/py_project/tests
那么你的PYTHONPATH应该包括/Users/michael/py_project路径。
您可以通过运行以下命令来设置它:

export PYTHONPATH=$PYTHONPATH:/Users/michael/py_project

在运行测试之前,请仔细检查PYTHONPATH是否设置正确:

echo $PYTHONPATH

一旦设置了PYTHONPATH,您应该能够从/Users/michael/py_project目录运行pytest tests

相关问题