2017-01-19 2 views
-1

Ich habe die Nase Test erstellen:Nase erforderlich 2 Argumente

import nose 
from nose.tools import istest, nottest 
nose.run() 
path1 = "/some/my/path1/" 
path2 = "/some/my/path2/" 

@istest 
def compare_dir(path1, path2): 
    my_bool = mytest, bool 
    yield my_test, my_bool 
    sub_path1 = path1 + "some_path" 
    sub_path2 = path2 + "some_path" 
    compare_dir(sub_path1, sub_path2) 

def my_test(is_equal): 
    assert is_equal, "Not equal!" 

Und ich habe eine Fehlermeldung anzeigt:

Traceback (most recent call last): 
    File "/Python27/lib/site-packages/nose/case.py", line 197, in runTest 
    self.test(*self.arg) 
TypeError: compare_dir() takes exactly 2 arguments (0 given) 

Was mache ich falsch? Ich habe bereits 2 Argumente für compare_dir geben. Ich habe beginnen Test als

/path/to/my/test/my_test_name.py --tests=my_test_name 

Antwort

1

Von dem, was ich kann ihm sagen, weil Sie eine Annahme stellen, für die Ihre Funktion, um die globalen Variablen path1 und path2 standardmäßig nehmen, was es wird nicht an der Funktion initiaton level erhalten Sie keine impliziten Werte, es sei denn, Sie definieren sie explizit.

könnten Sie versuchen,

def compare_dir(path1, path2): 

zu

def compare_dir(path1=path1, path2=path2): 

auf diese Weise ändern, wenn nichts standardmäßig übergeben wird, sollte es die globalen Werte annehmen.

+0

Vielen Dank! 'def compare_dir (Pfad1 = Pfad1, Pfad2 = Pfad2):' Dieser funktioniert! Aber warum nimmt es keinen Wert von 4 und 5 Zeilen? –

+0

Da, wenn Sie solche Werte in eine Funktion eingeben, sagen Sie, dass Sie etwas nennen wollen, das innerhalb der Funktion übergeben wurde. Es wird angenommen, dass es sich um brandneue Variablen handelt, die nur in dieser Funktion verwendet werden. –

+0

Sie könnten es mit 'compare_dir (path1, path2)' in Ihrem Code aufrufen, aber alle definierten Variablen am Anfang von Funktionen sind standardmäßig nichts und müssen ausgefüllt werden. –

Verwandte Themen