【问题标题】:Doctests that contain string literals包含字符串文字的文档测试
【发布时间】:2011-12-21 16:47:25
【问题描述】:

我有一个单元测试,我想为一个将 XML 作为字符串的函数编写。这是一个 doctest,我希望 XML 与测试一致。由于 XML 是多行的,我在 doctest 中尝试了一个字符串文字,但没有成功。这是简化的测试代码:

def test():
  """
  >>> config = \"\"\"\
  <?xml version="1.0"?>
  <test>
    <data>d1</data>
    <data>d2</data>
  </test>\"\"\"
  """

if __name__ == "__main__":
  import doctest
doctest.testmod(name='test')

我得到的错误是

File "<doctest test.test[0]>", line 1
         config = """  <?xml version="1.0"?>
                                            ^
     SyntaxError: EOF while scanning triple-quoted string

我尝试了很多组合,但似乎无法让它发挥作用。我得到的要么是这个错误,要么是“不一致的前导空白”错误。有什么建议么?我正在使用 python 2.4(不,没有升级的可能性)。

【问题讨论】:

  • 您是否尝试过放入交互式 shell 使用的 ... 延续提示?
  • 我没有要测试的 python2.4,但是在里面使用三个撇号 ''' 来避免 \" 位并添加 "... " 前缀对我有用。
  • 你有一个有效的例子吗?我不太明白你是怎么做的。我在 "..." 和 ''' 上尝试了几次尝试,但没有成功。
  • @DSM,啊,我想通了。我发布了一个答案,但如果您发布相同的内容,我会将其标记为答案,以便您获得信用。
  • @shadowland:没必要!只需接受您自己的答案。

标签: python comments doctest python-2.4


【解决方案1】:

此代码有效,例如使用 Python 2.7.12 和 3.5.2:

def test():
  """
  >>> config = '''<?xml version="1.0"?>
  ... <test>
  ...   <data>d1</data>
  ...   <data>d2</data>
  ... </test>'''
  >>> print(config)
  <?xml version="1.0"?>
  <test>
    <data>d1</data>
    <data>d2</data>
  </test>

  """

if __name__ == "__main__":
  import doctest
doctest.testmod(name='test')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-24
    • 1970-01-01
    • 2017-04-27
    • 1970-01-01
    • 1970-01-01
    • 2017-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多