2016-02-23 80 views
1

我是docstrings中的示例的朋友,并且在我看来,很好的示例包含了一条关于如果她执行一些代码行时用户将看到什么的声明。有时输出是字典,这些字典都是天生无序的。如何在通过Travis CI的文档字符串中编写示例?

"""This method prints a dictionary. 

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

我当然也可以是{'x': 1, 'y': 2}。正因为如此,特拉维斯CI会抱怨“失败文档测试测试”类似于这样的话:

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

我不能告诉特拉维斯CI是一本字典是无序的。我如何编写一个文档字符串,其中包含字典输出的示例,以便通过文档字符串测试?

回答

2

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

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

从itertools使用ordereddict怎么样? – Llopis

+0

Nah,另一个进口。当你只想显示方法/函数的功能时,这看起来像是一种矫枉过正的行为...... – MERose

3

这听起来很讨厌。

除了向Travis CI提出问题(因为是一个Travis bug)并希望它会得到修复,我不认为你可以做任何事情。

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

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

它看起来像各种项目都不得不写变通办法此问题。

+1

哈! *最后*一个用于[tag:ruby]的命令'Hash'es的用例! –

+1

是的,这确实很烦人。我报告了一个错误:https://github.com/travis-ci/travis-ci/issues/5684让我们希望他们关心,因为它与900个其他问题竞争。 – MERose

+0

问题已关闭。 Tja,我们必须继续以此为生。 – MERose

相关问题