包含字符串字面量的Doctest

4 投票
1 回答
1947 浏览
提问于 2025-04-17 08:48

我有一个单元测试,想为一个接收XML字符串的函数编写测试代码。这是一个文档测试,我希望XML能和测试代码放在一起。因为XML是多行的,我尝试在文档测试中使用字符串字面量,但没有成功。下面是简化后的测试代码:

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(而且不可能升级)。

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')

撰写回答