PyCharm 中的 Python 定界符行中的尾随空格被删除

2024-02-22

我在 PyCharm 社区 3.4.1 中使用 Python 2.7 和 unittest2。我需要将 CLI 命令的文本输出与字符串的内容进行匹配以进行自动化测试。

该命令的输出经常在行尾有尾随空格;如果我在用于存储预期文本的定界文档中的行末尾添加空格,它们会在编辑器中神秘地被删除,并且不会进入文件。为了解决这个问题,我不得不拆分我的定界符并用空格重新组合它;这非常丑陋,但这是我让它发挥作用的唯一方法。

我尝试过谷歌搜索并寻找解释,但没有找到;我怀疑 PyCharm 的自动格式化可能会感到困惑,并将其视为一行 Python 代码,在其中可以安全地删除尾随空格。

这是我的代码;它位于 unittest2 类中:

def test_help_command(self):
    textgot = run_the_help_command()
    partone = """
blah blaah blah blah blah
This line has a space at the end in the help output"""
    parttwo = """
foo foo foo foo foo
This line also ends with a trailing space in the help output"""
    partthree = """
baz baz baz 
"""
    # Recombine parts with spaces
    helptext = partone + " " + parttwo + " " + partthree
    self.assertMultiLineEqual(helptext, textgot, 'Help text')

欢迎提出建议:

  • 如何解决这个问题,以便我可以使用单个定界符字符串而不是拆分?我有更复杂的示例来测试哪些特征大文本块会让这种方法变得非常烦人
  • 其他比这里文档更好的存储字符串的方法
  • 证明这是或不是 PyCharm bug 的方法

这实际上并不是 PyCharm 中的错误;而是 PyCharm 中的错误。这是其“保存时删除尾随空格”功能的限制,该功能不是上下文相关的,并且会删除所有行中的尾随空格。您可以在“设置”|“设置”下将其关闭。编辑|一般的。

或者,您可以对定界符字符串中的尾随空格进行编码,方法是用一些特殊标记(“%20”或类似的东西)替换它们,并在执行assertMultilineEqual() 调用之前将它们替换回来。

另一种选择是简单地从 CLI 命令的输出中去除尾随空格,然后再将其与预期输出进行比较。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PyCharm 中的 Python 定界符行中的尾随空格被删除 的相关文章

随机推荐