python - 如何在同一个项目中使用 Streamlit 和 Pytest

标签 python pytest python-import streamlit

当我尝试在同一个项目中使用 Pytest 和 Streamlit 时,模块导入出现问题,我不知道如何处理它。

我的目录如下:

repo
├── main.py
├── app.py
├── utils
│   ├── __init__.py
│   ├── util_a.py
└── tests
     ├── __init__.py
     └── test_a.py

app.py 文件包含下一个导入行:

import utils.util_a 
...

现在,streamlit 应用程序按预期运行,并显示以下行: streamlit运行repo/app.py

但是当我运行py.test时,我收到了一条错误消息:

ModuleNotFoundError: No module named 'utils'

如果我按如下方式替换 app.py 中的导入行:

import repo.utils.util_a 
...

令人惊讶的是,Pytest 按预期运行,但 Streamlit 应用程序返回下一个错误:

ModuleNotFoundError: No module named 'repo'

该错误的根本原因是什么?我该如何处理?如何在同一个项目中使用 Pytest 和 Streamlit 而不会导致导入冲突?

谢谢!

最佳答案

repo中添加conftest.py文件解决了问题。现在,目录如下所示:

repo
├── main.py
├── app.py
├── conftest.py
├── utils
│   ├── __init__.py
│   ├── util_a.py
└── tests
     ├── __init__.py
     └── test_a.py

更多详细信息请参见that post

关于python - 如何在同一个项目中使用 Streamlit 和 Pytest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70493890/

相关文章:

python - python打印函数的问题

python - 将变量传递给 pytest 中的依赖测试

python - 如何在 Jupyter Notebook 中创建模块并导入它们? Python

python - pytest fixture 总是返回一个函数

Python 计算 Dataframe 中的 Null 值和非 Null 值

python - 从 bash : Command not found error 运行 Python 脚本

python - 无法使用顶级模块(源文件夹)启动我的导入语句

python - 在测试开始时仅运行一次 pytest Hook

python - 为什么 py.test 将我的 xfail 测试显示为已跳过?

导入后python模块为空