2009-03-26 13 views
0

Ich mag doctest, aber wenn Sie komplexe Argumente haben, die Sie setzen müssen, bevor Sie zu einer Funktion übergeben, wird es wirklich schwer zu lesen. Daher beginnen Sie mit mehreren Linien zuweisen dann die Funktion aufrufen, die Sie möchten Test .. Dieser Ansatz wird jedoch Bericht, den Sie eher mehrere Tests haben dann die tatsächliche Zahl der Tests, die Sie haben .. Ein Beispiel soll veranschaulichen, was ich meine ..können Sie zwischen einem Test und einer Variableneinstellung unterscheiden?

def returnme(x): 
    """ 
    Returns what you pass 

    >>> y = (2, 3, 5, 7) 
    >>> returnme(y) 
    (2, 3, 5, 7) 
    """ 
    return x 

In dem obigen snippet gibt ist nur ein Test und der andere ist nur eine Variable Zuweisung, aber das ist, was gemeldet wird ..

 
    Trying: 
     y = (2, 3, 5, 7) 
    Expecting nothing 
    ok 
    Trying: 
     returnme(y) 
    Expecting: 
     (2, 3, 5, 7) 
    ok 
    
    2 tests in 2 items. 
    2 passed and 0 failed. 

Ich habe auf die Fahnen sah dokumentiert, sicherlich etwas, was ich vermisst ..

Antwort

5

Prepend drei Perioden, um anzuzeigen, dass Sie die aktuelle Zeile, wie so fortsetzen wollen:

def returnme(x): 
    """ 
    Returns what you pass 

    >>> y = (2, 3, 5, 7) 
    ... returnme(y)  # Note the difference here. 
    ...     # Another blank line ends this test. 
    (2, 3, 5, 7) 
    """ 
    return x 

Das sollte den Trick machen. Sie können mehr darüber lesen, wie doctest die einzelnen Tests interpretiert here.

+0

Okay. Ich habe ein eingefügtes in meine Datei kopiert. Der Test schlägt jetzt fehl, weil die Funktion nichts zurückgibt. Du brauchst eine neue Zeile nach dem "..." .. Ich denke! Danke für den Zeiger trotzdem :) – emb

+0

Sorry, ich habe vergessen, das hinzuzufügen. Sie können eine weitere "..." Zeile hinzufügen und das wird die Dinge beenden. –

+0

Nein, du brauchst immer noch eine neue Zeile :) es sei denn, ich mache etwas schrecklich Schreckliches falsch. Willst du das überprüfen? – emb

Verwandte Themen