【问题标题】:What is the optimal naming convention for test files in Python?Python 中测试文件的最佳命名约定是什么?
【发布时间】:2011-12-01 15:20:23
【问题描述】:

我正在为 python 测试文件寻找一种最佳命名约定,以简化不同测试框架(unittest、note、pyunit 等)的使用,并且对这些工具的测试自动发现友好。

我只想要一组明确的建议,需要对工具进行最少的配置。

  • 测试目录名称? testtests?
  • 在哪里放置测试?在模块/testdir 或模块/../testdir 中
  • 使用下划线或破折号测试文件名? test_0.py 或 test-0.py

我知道,我有太多时间了:)

【问题讨论】:

  • “-”在 Python 中产生了问题,因为它违反了将文件名映射到模块名的规则。 从不将有效 Python 标识符以外的任何内容用作 Python 文件名的一部分。

标签: python unit-testing


【解决方案1】:

不要调用目录test,否则会与内置的test包冲突。

命名约定在PEP 8 中定义。请参阅“命名约定”部分。下划线比连字符好!

您的包裹布局更加灵活。我倾向于做以下事情:

package
|-- package
|  |-- __init__.py
|  `-- <etc>
|-- tests
|  `-- <etc>
|-- setup.py
|-- README
|-- LICENCE
`-- <etc>

这使测试与包本身分开。使用 setup.py 安装包可以只安装源代码,这样可以使人们的解释器保持整洁。这些测试可供在获得包源时需要它们的开发人员使用。

您应该查看The Hitch Hiker's Guide to Packaging 以获取有关 Python 包的更多信息。

【讨论】:

  • 谢谢!只有一个子问题:如果我有几个子模块怎么办,这意味着我必须将所有测试组合在同一个目录中?或者我应该只将它们移动到像/tests/a/ 这样的子目录?
  • 你可以诚实地选择这一个。 Django 使用我提到的方法,我认为很多人至少将它们放在一个地方。然而,Django 应用程序的测试遍布各处,我相信很多人也是这样做的。我倾向于将测试分散在一个地方(无论是在源内部还是外部),但我想不出一个强有力的论据来给你任何一种方式:)
  • 将测试保存在单独目录中的论点完全取决于美学。我同意@adamnfish 将它们分别放在一个镜像代码的目录结构中——这样人们就更容易找到要运行的特定测试(就像我在开发过程中一直做的那样)。但是,如果您倾向于更改项目结构(添加和删除模块/文件),您可能会错过更新测试 - 但您会看到失败,所以您会知道!
【解决方案2】:

这取决于您用于运行测试的工具。

如果您使用nosetest,用于检测测试的原理非常简单:

If it looks like a test, it’s a test.

如果您使用的是py.test,则约定为pretty open too

关于“在哪里放置测试”问题,个人而言,我更喜欢将测试存储在每个包的子目录中,以确保在有人编辑代码时不会忘记运行/触摸测试;)

【讨论】:

    猜你喜欢
    • 2018-04-15
    • 1970-01-01
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-12
    • 1970-01-01
    • 2017-09-28
    相关资源
    最近更新 更多