簡體   English   中英

我如何對Django Views進行單元測試?

[英]How do I unit test Django Views?

我想開始將單元測試集成到我的Django項目中,並且由於Django使用函數實現視圖的方式,我發現單元測試視圖很棘手。

例如,如果函數具有URL,則每個函數都是Django中的視圖/頁面。

我如何對Django視圖進行單元測試?

我不確定如何測試視圖是多么棘手。

您只需使用測試客戶端

代碼覆蓋很容易。 您可以了解URL請求如何映射到代碼路徑並進行相應的URL請求。

如果需要,您可以通過創建Request對象並檢查Response對象來“手動”調用視圖函數,但這樣做太多了。

如果您對代碼覆蓋率有疑問,這是件好事。 這意味着您擁有無法輕松映射到URL的代碼(這是用戶可以看到的Web應用程序的全部內容。)如果您的代碼未映射到URL,您可能應該(a)刪除代碼或(b)將其重構為一個單獨的模塊。

我們的視圖函數之外有很多模塊。 我們的視圖函數導入這些模塊。 我們用普通的單元測試來測試這些“視圖功能外”模塊。


這是一個典型的結構。

some_big_product/
|-- __init__.py
|-- settings.py
|-- urls.py
|-- logging.ini
|-- other_global_files.py
|-- an_app_1/
|   |-- __init__.py
|   |-- urls.py
|   |-- models.py
|   |-- views.py
|   |-- tests.py <-- the generic Django testing 
|   |-- app_specific_module.py
|   |-- app_specific_package/
|   |   |-- __init__.py
|   |-- test_app_specific_module.py <-- unittest 
|   |-- test_app_specific_package.py
|-- generic_module.py
|-- generic_package/
|   |-- __init__.py
|-- tests/
|   |-- test_this.py
|   |-- test_that.py
|   |-- test_all.py <-- not always practical
|-- scripts/
    |-- run_tests.sh 

django.test.client應該包含視圖基本單元測試所需的一切。 我也非常喜歡斜紋來測試整個堆棧。

你可以嘗試tddspry - 幫助者的集合,用鼻子測試和斜紋測試Django。 Nose還有覆蓋插件,可以生成相當覆蓋的報告。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM