Supposons que nous ayons la fonction ci-dessous:Prévenir doctest échec incorrect lorsque la sortie non ordonnée est impliqué
def f(x):
"""
Turns x into a set.
>>> given_x = ['a', 'b', 'c', 'd', 'e', 'f']
>>> f(given_x)
{'a', 'b', 'c', 'd', 'e', 'f'}
"""
return set(x)
Exécution de l'doctest sera (en général) faire quelque chose comme ceci:
Failure
**********************************************************************
File "/home/black/Dev/exp_2.py", line 6, in f
Failed example:
f(given_x)
Expected:
{'a', 'b', 'c', 'd', 'e', 'f'}
Got:
{'d', 'e', 'f', 'c', 'a', 'b'}
Apparemment, ce shouldn échec » Il s'est passé depuis que la fonction fonctionne comme prévu, mais c'est parce que le résultat est non ordonné.
La sortie de ma fonction réelle peut être beaucoup plus complexe. Ça pourrait être une dictée avec des dicts, des décors, des listes à l'intérieur.
J'ai besoin d'une solution générale (s'il y en a une). Simplement sort()
sur l'exemple présenté ne résoudrait pas mon problème de cas réel.
Question:
Comment puis-je empêcher le doctest de (à tort) à défaut lorsque la sortie est impliquée non ordonnée?
Cette solution fonctionne pour les objets mais pas pour tester les fonctions qui retournent des chaînes. Cas du monde réel: générer une sortie html. Html ne se soucie pas de l'ordre des attributs, il est donc logique de représenter attr dans un dict() pour le rendu ultérieur. Lorsque vous essayez de doctest la fonction render() l'ordre d'attribut dans la chaîne n'est pas prévisible. –