2015-02-11 124 views
0

我試圖在pytest測試中模擬一個函數,而模擬似乎根本不起作用。pytest.mark.django_db和mock.patch裝飾器不能一起工作

這裏是我的測試

@pytest.mark.django_db 
@patch('apps.titles.logic.get_similar_titles') 
def test_get_recommended_titles_for_results(self, mock_get_similar_titles, 
              set_up): 
    mock_get_similar_titles.return_value = OrderedDict([ 
     ('uuid-1', 165), 
     ('uuid-2', 163), 
     ('uuid-6', 135), 
    ]) 
    match_signals = [] 
    results = get_similar_titles(
     match_signals=match_signals, 
     title=set_up['title'] 
    ) 

    assert results.items() == mock_get_similar_titles.return_value.items() 

有一些兼容性問題,當使用@pytest裝飾,或有我犯了一個錯誤?

感謝

+0

堆棧溢出是每個人的資源,而不僅僅是你的個人幫助臺。破壞你的問題會傷害未來的讀者。 – 2015-02-12 01:20:03

回答

0

工作把我的頭在這裏的頂部,但不應該是最後一行寫着:

assert results.items() == mock_get_similar_titles().items() 

編輯:文檔seem to suggest so

0

您正在嘲笑您正在測試的功能。您希望模擬您正在測試的代碼所調用/使用的函數或對象,而不是您正在測試的代碼。