【问题标题】:How to write examples in docstrings that pass Travis CI?如何在通过 Travis CI 的文档字符串中编写示例?
【发布时间】:2016-02-23 12:34:32
【问题描述】:

我是文档字符串中示例的朋友,并且好的示例(在我看来)包括用户在执行某些代码行时将看到的内容的声明。有时输出是字典,众所周知,它们本质上是无序的。

"""This method prints a dictionary.

Examples
--------
>>> a = dict(x=1, y=2)
>>> a
{'y': 2, 'x': 1}
""""

我当然也可以是{'x': 1, 'y': 2}。正因为如此,Travis CI 会用类似以下的词来抱怨“失败的 doctest 测试”:

Expected:
    {'y': 2, 'x': 1}
Got:
    {'x': 1, 'y': 2}

我不能告诉 Travis CI 字典是无序的。如何编写包含字典输出的示例的文档字符串,以便通过文档字符串测试?

【问题讨论】:

    标签: python documentation integration-testing


    【解决方案1】:

    这听起来确实有点烦人。

    我认为除了提出针对 Travis CI 的问题(因为这个 Travis 错误)并希望它能够得到修复之外,您无能为力。

    同时,您可以将 Travis CI 配置为不运行此特定测试,或者您可以调整顺序并祈祷在给定特定输入的情况下,结果至少在特定安装上是部分确定的。

    对于它的价值,你并不孤单:

    看起来各个项目都不得不为这个问题编写解决方法。

    【讨论】:

    • 哈! 最后一个用例 ruby 的有序 Hashes!
    • 是的,确实很烦人。我报告了一个错误:github.com/travis-ci/travis-ci/issues/5684 希望他们关心,因为它正在与其他 900 个问题竞争。
    • 问题已关闭。 Tja,我们必须继续忍受它。
    • @MERose:嗯,说实话,我没有发现你的函数返回一个字符串。
    • @MERose:鉴于对您提交的 travis 问题的响应,我会在 Travis 支持论坛上询问如何为文档字符串中的字典返回值编写测试。也许然后有人会看到你的问题。
    【解决方案2】:

    我的问题本质上是关于文档字符串中的字典。我最喜欢的解决方法是

    """
    >>> a = dict(x=1, y=2)
    >>> sorted(a.items())
    [('x', 1), ('y', 2)]
    """
    

    【讨论】:

    • 使用itertools中的ordereddict怎么样?
    • 不,另一个导入。当您只想显示方法/函数的功能时,这似乎有点过头了......
    猜你喜欢
    • 2016-11-28
    • 2010-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-01
    • 2015-01-28
    • 1970-01-01
    相关资源
    最近更新 更多