2016-02-18 65 views
0

我有一個方法,需要argparse作爲參數。如何測試或調用將解析參數作爲參數的方法?

def some_method (self, options): 
    if options.something == True: 
     #do this 

有沒有一種方法可以直接調用這個方法而不需要進行argparse?

此刻,我必須在我稱之爲之前作出argparse。

parser = argparse.ArgumentParser(description='something') 
parser.add_argument('-s', '--something', dest='something') 
options = parser.parse_args() 
options.something = True 
x.some_method(options) 

回答

0

如果你可以修改的方法,你可以這樣做(儘管IFS的層不漂亮):

def some_method (self, options): 
    if isinstance(options, bool): 
     if options: 
      #do this 
    # you don't need to compare True to True, since it should be a boolean 
    if options.something: 
     #do this 

或者,你可以這樣做:

class options: 
    something = true 

x.some_method(options) 

我確信還有其他方法,但這些是我能想到的前兩種解決方案。

0

可以使用mock庫,你可以寫測試是這樣的:

from mock import Mock 

options = Mock() 
options.something = True 
# Add initialization of other attributes used in your test case here 

x.some_method(options) 

# make assertions 

實際上,我們做的鴨打字到這裏,我們不必準備解析參數對象,而是我們用在這種情況下表現出相同方式的模擬對象。

更重要的是,這個模擬對象的行爲可以很容易地修改來測試不同的情況。

相關問題