2016-02-23 79 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