Affirmation différée / échecs multiples par test

By | avril 11, 2019

Expert Python

'''

Implémente une forme d'assertions différées.

L'interface est 2 fonctions:

expect (expr, msg = None)

: Évaluer 'expr'comme un booléen, et garde la trace des échecs

assert_expectations ()

: soulève une assertion si un appel expect () a échoué

Exemple d'utilisation:

à partir des attentes import attendu, assert_expectations

def test_should_pass ():

attendez (1 == 1, 'un est un')

assert_expectations ()

def test_should_fail ():

attendre (1 == 2, 'un est deux')

attendre (1 == 3, 'un est Trois')

assert_expectations ()

'''

# —————————————————– –

def attendre(expr, msg=Aucun):

"garde la trace des attentes manquées"

si ne pas expr:

_log_failure(msg)

def assert_expectations():

"faire une affirmation s'il y a des attentes manquées"

si _expectations_échouées:

affirmer Faux, _report_failures()

# —————————————————– –

importation inspecter

importation os.chemin

_expectations_échouées = [[[[]

def _log_failure(msg=Aucun):

(nom de fichier, ligne, funcname, contextlist) = inspecter.empiler()[[[[2][[[[1:5]

nom de fichier = os.chemin.nom de base(nom de fichier)

le contexte = contextlist[[[[0]

_expectations_échouées.ajouter('fichier "% s", ligne% s, dans% s ()% s n% s' %

(nom de fichier, ligne, funcname, ((' n% s' % msg) si msg autre ''), le contexte))

def _report_failures():

global _expectations_échouées

si _expectations_échouées:

(nom de fichier, ligne, funcname) = inspecter.empiler()[[[[2][[[[1:4]

rapport = [[[[

' n nassert_expectations () appelé depuis',

'"% s" ligne% s, dans% s () n' % (os.chemin.nom de base(nom de fichier), ligne, funcname),

'Echec des attentes:% s n' % len(_expectations_échouées)]

pour je,échec dans énumérer(_expectations_échouées, début=1):

rapport.ajouter('% d:% s' % (je, échec))

_expectations_échouées = [[[[]

revenir (' n'.joindre(rapport))

# —————————————————– –

# _log_failure () notes

#

# stack () retourne une liste d'enregistrements d'images

# 0 est la fonction _log_failure ()

# 1 est la fonction expect ()

# 2 est la fonction appelée expect (), c'est ce que nous voulons

#

# un enregistrement d'image est un tuple comme ceci:

# (Frame, filename, line, funcname, contextlist, index)

# nous sommes principalement intéressés par le milieu 4,

# —————————————————– –