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

私は多くの組み合わせを試しましたが、これを機能させることができないようです。私が得るのは、これか「一貫性のない主要なホワイトペース」エラーのいずれかです。助言がありますか?私はPython2.4を使用しています(いいえ、アップグレードする可能性はありません)。

4

1 に答える 1

15

このコードは、たとえばPython2.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 に答える