【问题标题】:Python: Nosetests with multiple filesPython:具有多个文件的 Nosetests
【发布时间】:2016-03-31 04:16:22
【问题描述】:

这是一个广泛的问题,因为似乎还没有人找到解决方案,所以我认为要求查看一个工作示例可能会更有用。所以这里是:

有没有人使用导入多个文件/包对 python 项目进行测试?

我的意思是,您是否有目录列表,例如:

project/
    |
    |____app/
          |___main.py
          |___2ndFile.py
          |___3rdFile.py
     |____tests/
          |____main_tests.py

您的 main.py 在哪里导入多个文件,然后您从项目文件中使用 main_tests.py 文件中的测试脚本执行鼻子测试?如果是这样,请您截屏所有主文件和 main_tests.py 文件的导入部分吗?

这似乎是鼻子测试中的一个主要问题,没有明显的解决方案:

【问题讨论】:

  • 这是您关于同一主题的第二个问题。我问了你两个问题,你没有解决最有可能是失败的原因。请参考您的问题并再次查看 cmets。您不应该两次发布相同的问题。但是,这是一件非常常见的事情。
  • 真正相同的主题,不同的方法。

标签: python testing nose


【解决方案1】:
  1. python 模块不能以数字开头,因此2ndFile.py3rdFile.py 实际上不起作用(重命名它们)。
  2. 您需要在 app 目录中添加一个 __init__.py,以便将其视为一个包,因此添加它(它可以是空文件)。
  3. 测试目录中不需要__init__.py
  4. main_tests.py 中的导入语句应类似于 from app.main import blah
  5. project 目录的绝对路径需要在您的sys.path 中。为此,请设置一个环境变量:export PYTHONPATH=/path/to/project

现在运行鼻子测试应该可以工作了。

【讨论】:

  • 您好,谢谢,我删除了 init.py 并按照建议添加了 from app.main import blah 并重新运行了鼻子测试——没有错误。但是,当我现在运行 python app.py 时,我收到了我在进行鼻子测试时遇到的错误 ImportError: No module named ex48.2ndFile
  • 再读一遍第1点。你不能有一个名为2ndFile.py的模块
  • 文件名只是示例——实际目录中没有以数字开头的文件名。另外,您在哪里设置项目目录的绝对路径,即。 export PYTHONPATH=/path/to/project---这是在*.py文件里面还是系统本身的环境变量?
  • 系统本身的环境变量。不要尝试从 python 中设置它。你也需要它来运行你的应用程序。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-16
  • 1970-01-01
  • 1970-01-01
  • 2013-06-12
  • 1970-01-01
  • 2022-08-16
相关资源
最近更新 更多