名称中包含 Space 的单元测试文件

Unit Testing File with Space in the Name

我有一个 Python 项目,其中主文件的名称中包含空格。我知道不鼓励这样做,但在这种情况下,我认为这是必要的。该文件正在使用 py2app 编译成独立的可执行文件——在构建可执行文件时使用文件名作为应用程序名称(应用程序名称、菜单引用等)。这很好用,因为基础文件没有导入项目中的任何地方,并且 py2app 可以优雅地处理空格。让我们调用文件 Application Name.py.

但是,为了针对 Application Name.py 进行 运行 单元测试,我必须消除空格才能将文件导入 unittest。我无法使用 importlib__import__ 因为文件不是作为包构建的,所以这两种方法都失败了。我的工作流程是将文件名重构为application_name.py,单元测试运行,然后在编译成Application Name.app.[=23=之前将名称重构为Application Name.py ]

因此选项显示为:

  1. 继续做我正在做的事情(可行,但不理想),
  2. 创建一个名为 Application Name.py 的包装器,导入 application_name.py 包装器不需要进行单元测试(看起来很傻),
  3. Application Name 转换成一个包,这样我就可以使用 importlib(似乎有点矫枉过正),或者
  4. 完全是其他东西。

有没有什么方法可以在单元测试中优雅地处理我没有看到的带空格的文件名,或者我应该接受它?

似乎选项 2 可能效果最好。 选项 1 和 2 是你最好的选择(是的 3 有点矫枉过正),虽然 2 看起来过多,但它确实将你的 python 逻辑与你的 py2app 需求隔离开来——现在 Application Name.py 是一个“py2app 包装文件” ",并且 application_name.py 包含您的实际逻辑。

这比选项 1 更有效,因为通常首选职责分离。如果您对应用程序名称提出其他要求,您可能只想处理“py2app 包装文件”,而不更改与实际逻辑相关的任何内容。

您当前的工作流程也有效,但是当您想要 运行 单元测试时,这确实意味着更多的手动重命名 - 如果您想要自动化单元测试过程怎么办?