2011-12-21 45 views
2

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

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 

我已经尝试了许多组合和似乎无法得到这个工作。无论是这个还是我得到的“不一致的领先whitepsace”错误。有什么建议么?我使用的是Python 2.4(不,没有升级的可能性)。

+3

你有没有试图把在'...'延续提示交互式shell使用? – 2011-12-21 17:13:51

+1

我没有python2.4来测试,但是使用三个'''来避免\“位和添加”...“前缀对我有用 – DSM 2011-12-21 17:16:23

+0

你有没有可用的例子?我不知道你是怎么做到的,我在“......”和“'”上尝试了几次,但都没有成功, – shadowland 2011-12-21 17:37:15

回答

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