首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python doctest的多行语句

使用Python doctest的多行语句
EN

Stack Overflow用户
提问于 2015-05-26 03:00:10
回答 2查看 9.5K关注 0票数 20

是否可以使用python处理多行语句?

例如,以下内容在doctest中不起作用:

代码语言:javascript
复制
>>> for s in [1,2,3]:
...     for t in [4,5,6]:
...         print(s*t)

我需要从doctest执行上述三条语句。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-26 03:08:11

编辑:我的回答是错误的;参见下面raacer的评论。我不能删除这个,因为这是公认的答案。

这不是doctest的工作方式。它测试一个计算为值的表达式;它不捕获和测试输出。因此,您想要做的是创建一个可以测试的列表,使用列表理解可以轻松地在一行中完成该任务:

代码语言:javascript
复制
>>> [s * t for s in [1, 2, 3] for t in [4, 5, 6]]
[4, 5, 6, 8, 10, 12, 12, 15, 18]
票数 -3
EN

Stack Overflow用户

发布于 2017-04-10 16:39:08

你可能做错了什么。下面是正确的例子。

test.py:

代码语言:javascript
复制
"""
>>> for s in [1,2,3]:
...     for t in [4,5,6]:
...         print s*t
4
5
6
8
10
12
12
15
18
"""

它工作得很好:

代码语言:javascript
复制
$ python -m doctest -v test.py
Trying:
    for s in [1,2,3]:
        for t in [4,5,6]:
            print s*t
Expecting:
    4
    5
    6
    8
    10
    12
    12
    15
    18
ok
1 items had no tests:
    test.print_and_return
1 items passed all tests:
   1 tests in test
1 tests in 2 items.
1 passed and 0 failed.
Test passed.

还请注意,doctest同时捕获返回值和输出:

代码语言:javascript
复制
def print_and_return():
    """
    >>> print_and_return()
    1
    2
    """
    print(1)
    return 2

任何预期的输出都必须紧跟最后的“>>>”或“.‘包含代码的行,并且预期的输出(如果有的话)扩展到下一个'>>>‘或全空格行。

https://docs.python.org/2/library/doctest.html#how-it-works

票数 33
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30448746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档