Python unittest的工作原理是Pycharm,但不是Ternim

2024-09-29 21:40:44 发布

您现在位置:Python中文网/ 问答频道 /正文

当我在Pycharm(版本2017.3.2ce)中使用向PYTHONPATH添加内容根向PYTHONPATH添加源根设置来运行单元测试时,一切正常。在

enter image description here

但是,当我试图在pycharm中运行terminal将内容根和源根设置为PYTHONPATH运行pycharm。它总是说ImportError: No module named ***

我的文件夹结构如下:

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

当测试_控制器.py在中调用方法模型.py(模型文件夹)类似 from Model import model 它总是说没有名为Model的模块

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


Tags: 代码py模型版本文件夹内容modelinit
2条回答

默认情况下,PyCharm会将project root添加到PYTHONPATH中,禁用向PYTHONPATH添加内容根可防止这种行为。在

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

看看测试运行配置,您可能有一个工作目录设置为Tests,这意味着{}将被Python添加到{},而项目root-by-PyCharm。禁用向PYTHONPATH添加内容根目录,PyCharm不会向PYTHONPATH添加项目根,Python不会找到Model包。在

要在终端上工作,您必须注意您拨打的确切电话,例如:

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

可以,Python将把当前工作目录(projectroot)添加到PYTHONPATH。在

^{pr2}$

将失败-<project_root>不在PYTHONPATH中,Python无法解析Model包。希望有道理。在

将以下代码添加到初始文件进行测试。那么它应该在Pycharm或terminal中工作。在

import sys
import os
curPath = os.path.abspath(os.path.dirname(__file__))
rootPath = os.path.split(curPath)[0]
sys.path.append(rootPath)

相关问题 更多 >

    热门问题