4

我有一个单元测试,我想为一个将 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(不,没有升级的可能性)。

4

1 回答 1

15

此代码适用于例如 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')
于 2011-12-21T17:42:05.270 回答