2017-05-31 74 views
0

我是新編寫單元測試的,這個問題可能很愚蠢,但是我經過大量的研究後發佈了這個問題。視圖中的嘲諷函數 - Django

我正在嘗試爲集中式/ views.py中的一個函數編寫一個單元測試,這個測試正在很多其他視圖中使用。

功能看起來像這樣

def make_job(self, request, *args, **kwargs): 
    ..... 
    ..... 
    return Response(data, status=status.HTTP_200_OK) 

我需要在嘲弄在單元測試中請求幫助,因爲該功能是由我不知道如何獨立測試此功能不依賴於其它視圖稱爲網址路徑。

嘲笑這個請求的方法是什麼?

感謝

回答

0

您可以使用mock.patch作爲函數裝飾,甚至更好的contextmanager:

with mock.patch('path.to.your.app.Class.method', new=new_function_with_return): 
    # do something here 
    pass 

https://docs.python.org/3/library/unittest.mock.html#patch

[編輯]對不起,我正在讀一本有點太快速。你可以通過Django的RequestFactory製造假的請求對象:

https://docs.djangoproject.com/en/1.11/topics/testing/advanced/#the-request-factory

+0

@odi嗨 - 感謝您的回覆,我曾嘗試要求在工廠,但需要的URL和自多個視圖的路徑使用這個功能,我不知道應該使用哪個請求url。所以我想知道是否有一種方法可以獨立測試 – HitRefresh

+0

,在測試理論時,您應該測試所有的url路徑以達到100%的覆蓋率和分支控制;)對某些函數只進行集成測試並不理想,但有時候是唯一的經濟的方式來獲得體面的覆蓋面。從經驗談起:在一個大的遺留代碼基礎上進行一些整合測試,在瘋狂到合理的規模上要高出幾個數量級。 – ACimander