2011-12-21 17 views
2

私は文字列としてXMLをとる関数のために書いたい単体テストを持っています。 Doctestであり、XMLをテストと一直線にしたいと思います。 XMLは複数行であるため、doctest内で文字列リテラルを試しましたが、成功しませんでした。ここでは簡略化されていますテストコード:私は取得文字列リテラルを含む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を使用しています(いいえ、アップグレードの可能性はありません)。

+3

あなたが入れてみましたか? –

+1

テストするpython2.4はありませんが、内部に3つのアポストロフィを使用して\ "ビットを避け、" ... "接頭辞を追加してください。 – DSM

+0

あなたは動作する例がありますか?あなたがそれをやっているのをよく見ていない。「...」と「 '」といくつかの試みを試みたが成功しなかった。 – shadowland

答えて

10

このコードは動作します: `...`継続は対話型シェルが使用することを促しで

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') 
関連する問題