gpt4 book ai didi

Python 单元测试适用于 Pycharm,但不适用于终端

转载 作者:行者123 更新时间:2023-12-04 14:23:57 26 4
gpt4 key购买 nike

当我在 Pycharm(版本 2017.3.2 CE)中使用 Add content roots to PYTHONPATH & Add source roots to PYTHONPATH 设置运行我的单元测试时,一切正常。

enter image description here

但是当我尝试运行终端 将内容根和源根取消设置为 PYTHONPATH 在 pycharm 中运行。它总是说 ImportError: No module named ***

我的文件夹结构如下:

-Project
-Controller
-__init__.py
-test_controller.py
-Model
- __init__.py
-model.py
-Tests
-__init__.py
-someunittest.py

当 test_controller.py 调用 model.py(模型文件夹)中的方法时,例如从模型导入模型它总是会说No module named Model

因为最后我需要让其他用户在不安装 Pycharm 或其他东西的情况下执行我的代码。我需要将设置集成到我的代码中。谁能帮忙?

最佳答案

PyCharm 将项目根添加到 PYTHONPATH默认情况下,禁用 Add content roots to PYTHONPATH 可防止此行为。

还有一个重要时刻需要理解:当您使用 python path/to/script.py 运行脚本时Python 将脚本目录添加到 PYTHONPATH .

查看测试运行配置,您可能将工作目录设置为 Tests , 表示 Tests将被添加到 PYTHONPATH通过 Python,项目根目录 - 通过 PyCharm。禁用将内容根添加到 PYTHONPATH,PyCharm 不会将项目根添加到 PYTHONPATH Python 不会找到 Model包。

要使其在终端上运行,您必须注意您所做的确切调用,例如:

cd <project_root>
python -m unittest Tests.test_something
# or
python -m unittest discover Tests/

没问题,Python 会将当前工作目录(项目根目录)添加到 PYTHONPATH .

cd Tests
python -m unittest test_something.py

将失败 - <project_root>不在 PYTHONPATH 中, Python 无法解析 Model包裹。希望它有意义。

关于Python 单元测试适用于 Pycharm,但不适用于终端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49849475/

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