【发布时间】:2010-12-26 04:44:50
【问题描述】:
对于一个简单的 Python 模块来说,非常常见的目录结构似乎是将单元测试分离到它们自己的 test 目录中:
new_project/
antigravity/
antigravity.py
test/
test_antigravity.py
setup.py
etc.
例如看到这个Python project howto。
我的问题很简单实际运行测试的通常方式是什么?我怀疑这对除了我之外的每个人来说都是显而易见的,但你不能只从测试目录运行 python test_antigravity.py 作为它的import antigravity 将失败,因为模块不在路径上。
我知道我可以修改 PYTHONPATH 和其他与搜索路径相关的技巧,但我不敢相信这是最简单的方法 - 如果您是开发人员,这很好,但如果他们只是想检查,期望您的用户使用是不现实的测试通过了。
另一种选择是将测试文件复制到另一个目录中,但这似乎有点愚蠢,并且错过了将它们放在单独的目录中开始的意义。
那么,如果您刚刚将源代码下载到我的新项目中,您将如何运行单元测试?我更喜欢一个能让我对我的用户说的答案:“运行单元测试做 X。”
【问题讨论】:
-
@EMP 当您需要设置搜索路径时,正确的解决方案是... 设置搜索路径。您期待什么样的解决方案?
-
@CarlMeyer 另一个更好的解决方案是使用
unittest命令行界面,如我的answer below 中所述,因此您不必将目录添加到路径中。 -
这里也一样。我刚刚开始为一个小型 Python 项目编写我的第一个单元测试,并花了几天时间试图解释这样一个事实,即我无法在将源代码保存在 src 目录中并在测试目录中进行测试的同时轻松运行测试,似乎与任何现有的测试框架。我最终会接受事情,想办法;但这是一个非常令人沮丧的介绍。 (而且我是 Python 之外的单元测试老手。)
标签: python unit-testing