2017-02-20 54 views
0

我有一個函數,它使用一個字典,構造出來的函數,並做一些事情。功能是這樣的:從python函數outerscope嘲諷資源

TRANSLATION_TABLE = {#something} 

def get_translate(tokens_and_tags): 
results = [] 
for token, tag in tokens_and_tags: 
    results.append((TRANSLATION_TABLE.get(token, token), tag)) 
return results 

現在我想要寫測試,但是,我怎麼也找不到嘲笑「TRANSLATION_TABLE」字典正常。

什麼是測試這個函數和嘲笑字典的正確方法?

回答

1

你想使用依賴注入

def get_translate(tokens_and_tags, translation_table=None) 
    translation_table = translation_table or TRANSLATION_TABLE 

現在,你可以注入在您的測試是假的。

def test_get_translate(...): 
    ... 
    expect = ... 
    actual = get_translate(fake_tokens_and_tags, {...}) 
    assert actual == expect. 
+0

非常感謝,它工作得很好:) –