2017-01-19 25 views
-1

我已經創建鼻試驗:鼻子需要2個參數

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!" 

而且我有錯誤:

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) 

什麼是我做錯了什麼?我已經爲compare_dir提供了2個參數。 我已經開始試驗,

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

回答

1

從我可以告訴它是因爲你正在做一個假設,即你的函數採取全局變量路徑1和路徑2默認情況下,它不會,在功能initiaton除非您明確定義它們,否則不會獲得隱含值。

你可以嘗試,如果沒有默認情況下,它應該承擔的全球價值觀通過改變

def compare_dir(path1, path2): 

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

這樣。

+0

非常感謝! 'def compare_dir(path1 = path1,path2 = path2):'這個工作正常!但爲什麼它不能從4條和5條線獲得價值? –

+0

因爲當你在一個函數中加入類似這樣的值時,你說這就是你想調用的函數內部傳遞的任何東西。所以它假設它們是僅在該函數內部使用的全新變量。 –

+0

你可以在你的代碼中用'compare_dir(path1,path2)'調用它,但函數開始處的所有已定義變量都默認爲空,並且需要填入。 –

相關問題